У меня есть простой div и флажок внутри. Оба элемента привязаны к событию onClick. Сначала запускается на внутреннем элементе, поэтому checkbox, а затем на div. Мой вопрос: возможно ли остановить любые другие события в DOM после повышения первого события до следующего щелчка? другими словами, я могу остановить флажок onClick, чтобы вызвать событие из div?
<div onclick="divOnClic(this);" style="width: 200px; height: 200px ; background-color: red">
<input type="checkbox" onclick="checkboxOnClick(this);"/>
</div>
function divOnClic(e) {
alert('z diva');
}
function checkboxOnClick(e) {
alert('z checka');
e.preventDefault();
}
вот живой пример http://jsfiddle.net/QK43u/1/
Это решит вашу проблему:
<div onclick="divOnClic(event);" style="width: 200px; height: 200px ; background-color: red">
<input type="checkbox" onclick="checkboxOnClick(event);"/>
</div>
function divOnClic(e) {
alert('z diva');
}
function checkboxOnClick(e) {
alert('z checka');
e.stopPropagation()
}
jquery
на странице?
Попробуйте использовать:
e.stopPropagation();
preventDefault() предотвращает выполнение события по умолчанию. Это не мешает пузыриться. Вам нужно использовать метод stopPropagation().
$('#myDiv').on('click',divOnClick);
$('#myCheckBox').on('click',checkboxOnClick);
function divOnClick(e) {
alert('div got clicked');
}
function checkboxOnClick(e) {
e.stopPropagation();
alert(e.isPropagationStopped());
}
Примечание. Я рекомендую использовать встроенные стили или встроенные обработчики событий. Смотрите здесь скрипку: http://jsfiddle.net/4Lged/7/
Примечание: пузырь событий происходит от внутреннего элемента и распространяется на внешний элемент. Для этого нет необходимости. Захват другого пути вокруг div будет распространять свое событие на дерево. Там мы не останавливаем событие от распространения.
Вы должны использовать event
внутри своего вызова функции. И используйте stopPropagation()
чтобы предотвратить распространение родительского элемента.
<div onclick="divOnClic(event);" style="width: 200px; height: 200px ; background-color: red">
<input type="checkbox" onclick="checkboxOnClick(event);"/>
</div>
<script>
function divOnClic(e) {
alert('z diva');
}
function checkboxOnClick(e) {
e.stopPropagation()
alert('z checka');
}
</script>