JQuery Live событие для добавленных элементов DOM - PullRequest
23 голосов
/ 01 октября 2010

Я хочу добавить класс к любому элементу DOM, который находится на странице сейчас или в будущем, у которого есть указанный класс и соответствует некоторым критериям

, поэтому для некоторого псевдокода

$('.location').live('load',function(){
    if($(this).find('input:first').val().substr(0,1) == "!"){ $(this).addClass('hidden')}
});

конечно это ничего не делает

РЕДАКТИРОВАТЬ ПРИМЕЧАНИЕ

это тоже не работает

$('.location').live('load',function(){
    alert('adding location');
});

Ответы [ 3 ]

24 голосов
/ 01 октября 2010

Функция live () jQuery - это лишь часть плагина livequery, который гораздо богаче. Если вы используете livequery, вы можете сделать что-то вроде ..

$('.location').livequery(function() {
   // perform selector on $(this) to apply class   
});

Это будет охватывать существующие элементы плюс любые будущие элементы, добавленные в DOM.

0 голосов
/ 01 октября 2010

Код .subtr(0,1) = "!", вероятно, не делает то, что вы хотите.

0 голосов
/ 01 октября 2010

Вы не можете сделать это.

Вам нужно будет сделать:

$('.location').filter(function () {
    return ($(this).find('input:first').val().substr(0, 1) == "!");
}).addClass('hidden');

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

...