У меня есть привязка в элементе списка. Оба элемента имеют событие. Я бы не хотел, чтобы щелкнуть элемент списка, щелкнув якорь внутри.jQuery: неотъемлемое событие ребенка?
Хотелось бы избежать хаоса. Я нашел эти функции, но я не был в состоянии использовать их, как я хотел:
Это код:
// HTML
<ul>
<li id="1">Item #1 <a href="" class="delete">[DEL]</a></li>
<li id="2">Item #2 <a href="" class="delete">[DEL]</a></li>
<li id="3">Item #3 <a href="" class="delete">[DEL]</a></li>
<li id="4">Item #4 <a href="" class="delete">[DEL]</a></li>
</ul>
// JS
$("ul").sortable();
$(document).on("click", "li", function() {
alert("list-item clicked.");
});
$(document).on("click", "a.delete", function(e) {
e.preventDefault();
if (confirm("Del?")) {
alert("list-item clicked.");
}
// do nothing
});
Вот скрипка: http://jsfiddle.net/UtE87/1/
Каков наилучший способ? Заранее большое спасибо!
Это просто, ничего себе. Мне стыдно. Спасибо, я приму свой ответ, как только мне позволено! –
@ Mr.Bombastic: Обратите внимание, что это работает только потому, что jQuery делает магию в фоновом режиме. Вы используете * событие делегирование *, поэтому оба обработчика привязаны к одному элементу. Без jQuery 'e.stopPropagation()' не будет работать здесь (к сожалению, документация не объясняет, что именно происходит). –