jQuery делегирование внутри div> div> a также :( - PullRequest
4 голосов
/ 25 ноября 2011

HTML:

<div id="a">
  <a id="a0" href="#"></a>

  <div id="b"><a id="b0" href="#"></a><div>
<div>

JQuery:

$('#a').delegate('a', 'click', function(){ //do stuff });

делегаты также # b0. Есть ли какой-нибудь умный способ выбора способов игнорировать #b?

NB /// ссылки внутри div добавляются и отключаются динамически ///

ти

Ответы [ 4 ]

5 голосов
/ 25 ноября 2011

если вы знаете, что это только прямые потомки, попробуйте

$('#a').delegate('#a>a', 'click', function(){ alert('a') });

если вы знаете, что хотите игнорировать детей, попробуйте

$('#a').delegate('a:not(#b>a)', 'click', function(){ alert('a') });

РЕДАКТИРОВАТЬ: скрипка

0 голосов
/ 25 ноября 2011

jQuery1.7 или выше

$('#a').on('click', '#a0', function(event) {
    alert(event.target.id);
});
0 голосов
/ 25 ноября 2011

Первое поле в методе делегата является селектором.На данный момент вы выбираете все якоря.Вместо этого используйте идентификатор.

0 голосов
/ 25 ноября 2011

Это работает, как ожидалось. Ваш delegate() вызов установит обработчик событий для всех детей до #a, которые соответствуют селектору a.

Если вы пытаетесь установить обработчик для определенного элемента, тогда сделайте это

$('#a0').click(function(){ ... });

Также ваш html довольно испорчен. Убедитесь, что закрывающие теги действительно закрываются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...