2015-08-19 2 views
0
<div class="toggle-bar"> 
    <h3><input type="checkbox" class="select-all"> Title</h3> 
</div> 

<div class="content"> 
    <p>lorem ipsum</p> 
    <p>lorem ipsum</p> 
</div> 

Когда я нажимаю .toggle-bar, toggle() будет срабатывать для .content. Но как я могу предотвратить toggle(), если я поставлю флажок?Checkbox внутри контейнера с событием щелчка

Я попытался следующие, но не работает для меня:

$(".toggle-bar").click(function() { 
    $(this).next(".content").toggle(); 
}).children(".select-all").click(function(e) { 
    e.stopPropagation(); 
}); 

ответ

2

использование stopPropagation в дочерних элементов щелкните событие, чтобы предотвратить родительский щелчок.

$(".select-all").click(function(e) { 
    e.stopPropagation(); 
    // 
}); 
+0

Спасибо, это работает для меня! Я также попробовал его в функции щелчка родительского элемента. Но не получилось. Спасибо :) –

1

Вы можете поймать событие и остановить его распространение с использованием stopPropagation()

$(".toggle-bar").click(function() { 
 
    $(this).next(".content").toggle(); 
 
}); 
 
$(".select-all").click(function(e) { 
 
    e.stopPropagation(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="toggle-bar"> 
 
    <h3><input type="checkbox" class="select-all"> Title</h3> 
 
</div> 
 

 
<div class="content"> 
 
    <p>lorem ipsum</p> 
 
    <p>lorem ipsum</p> 
 
</div>

0

Вы можете проверить, если имя класса элемента целевого события является «выбрать все», и если поэтому верните пустоту.

Вы могли бы изменить свой код, чтобы посмотреть, как это ...

<div id="toggle-bar" class="toggle-bar"> 
    <h3><input type="checkbox" class="select-all"> Title</h3> 
</div> 

И JavaScript, чтобы выглядеть следующим образом ...

$(".toggle-bar").click(function(event) { 
    var target = event.target || event.srcElement; 

    if (target.className === 'select-all') { 
     return; 
    } 

    $(this).next(".content").toggle(); 
}); 
+0

Если я нажму на ярлык, флажок всегда будет отмечен/не установлен. Но я хочу иметь возможность переключаться без проверки/снятия отметки. Javascript необходимо здесь ... –

+0

@JeroenBellemans Я не понимаю, почему вы не хотите, чтобы флажок был проверен. Почему у вас есть флажок? –

+0

абзацы - просто фиктивный контент. но на всех флажках. Поэтому я мог бы скрыть их все с помощью переключателя или проверить их все, используя флажок;) –

Смежные вопросы