Дополнительно
HTML Div onclick event
У меня есть один html div на моей странице jsp, на котором я поместил один анкерный тег, пожалуйста, найдите код ниже для этого
<div class="expandable-panel-heading">
<h2>
<a id="ancherComplaint" href="#addComplaint"
onclick="markActiveLink(this);">ABC</a>
</h2>
</div>
JS код
$('.expandable-panel-heading:not(#ancherComplaint)').click(function () {
alert('123');
});
function markActiveLink(el) {
alert($(el).attr("id"));
}
здесь я, когда нажимаю на div , я получаю предупреждение с сообщением 123
, это нормально, но когда я нажимаю на ABC , я хочу сообщение, которое хочу вызвать метод markActiveLink
.
[JSFiddle][1]
что не так с моим кодом? пожалуйста, помогите мне.
15
9
Проблема заключалась в том, что щелчок по якору все еще вызывал щелчок в вашем
< div >
. Это называется "событие пузырится".На самом деле, есть несколько решений:
Проверка в обработчике событий щелчка DIV, был ли фактический целевой элемент якорем < br / > [& rarr; jsFiddle](http://jsfiddle.net/JVrNc/3/)
Остановка распространения события из списка привязок < br / > [& rarr; jsFiddle](http://jsfiddle.net/JVrNc/5/)
< hr / > Как вы, возможно, заметили, я удалил следующую часть селектора из моих примеров:
Это было ненужным, потому что нет элемента с классом
.expandable-panel-heading
, который также имеет#ancherComplaint
в качестве своего идентификатора .Я предполагаю, что вы хотели подавить событие для якоря. Это не может работать таким образом, потому что оба селектора (ваш и мой) выбирают один и тот же DIV. Селектор не влияет на слушателя, когда он вызывается; он устанавливает только список элементов, на которые должны быть зарегистрированы слушатели. Поскольку этот список одинаков в обеих версиях, разницы нет.
Попробуй это
[ DEMO ][1]
Попробуйте следующее:
Вот рабочая демонстрация: http://jsfiddle.net/JVrNc/4/
Измените свой код jQuery с этим. Он предупредит идентификатор а.
[Демо][1]
Вам нужно прочитать о пузырях событий и наверняка удалить встроенную обработку событий, если у вас все равно есть jQuery
Проверьте щелчок на div и проверьте цель
[ Live Demo < / kbd >](http://jsfiddle.net/mplungjan/kDnRy/)
Я бы использовал «stopPropagation», как это:
Попробуйте этот пример, onclick все еще вызывается из вашего HTML, и пузырь событий прекращается.
[Http://jsfiddle.net/NXML7/1/][1]
поместите свою функцию jquery в готовую функцию для события щелчка вызова:
при нажатии на кнопку оповещения div