Почему «Live» не привязан к фактическому элементу - PullRequest
0 голосов
/ 20 февраля 2010

У меня мало проблем, особенно с пузырьками событий, а также с "живым" методом.

У меня есть таблица с несколькими ячейками, и в каждой ячейке "td" есть список и ссылки "li a". С ссылками связан ".class", связанный с ними.

Так что я просто хочу, чтобы ссылки работали, я использую метод live (потому что они создаются динамически)

$('.aclass').live('click',function() {
// Do something
});

когда я наблюдаю за прослушиванием событий с помощью инструментов разработчика Google Chrome, я вижу не ссылку, которая прослушивает анонимную функцию, а целую ячейку "td".

Почему? Как я могу заставить ссылку слушать функцию?

Ответы [ 2 ]

1 голос
/ 20 февраля 2010

[обновление]

теперь в jQuery есть метод .on, который намного лучше, понятнее, и я рекомендую использовать только .on и .off для всей обработки событий, которую вы делаете.

[/ update]

В следующий раз вы должны написать более четко;)

Функция live привязывает событие к родительскому элементу всех выбранных вами элементов, поэтому в вашем случае к родительскомуэлементов, имеющих класс «класс».А затем он прослушивает и вызывает функцию «Ваше событие», когда делается щелчок мышью на предмете, который подходит селектору.Вот почему поведение отличается.

Если вы хотите привязать клик непосредственно к элементу, используйте связывание вместо live и выполняйте

$('.aclass').unbind('click').bind('click',function(){ something });

каждый раз после создания новых элементов

0 голосов
/ 20 февраля 2010

Метод live - , особенно , полезен для динамически создаваемых элементов. В вашем случае, кажется, ссылки создаются не на лету, вы можете просто использовать это:

$('.aclass').click(function() {
// Do something
});
...