2010-10-01 3 views
23

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

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

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

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

EDIT Примечание

это не работает либо

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

См. Мой ответ об использовании livequery() вместо live(). Это плагин, на котором основывается live(). – Gregg

+0

Какую версию jQuery вы используете? –

+0

Я использую 1.4.2 – mcgrailm

ответ

24

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

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

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

+0

, так что это плагин, который необходимо включить? – mcgrailm

+0

Да. http://docs.jquery.com/Plugins/livequery – Gregg

+1

+1 Не видел ответа, когда я отвечал. Удалил мой. : o) Хотя я не думаю, что я бы сказал, что это подмножество другого. То, как они работают, совершенно другое. – user113716

0

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

Вы должны сделать:

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

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

+0

надеюсь, что я смогу найти что-то, что покроет их всех, но это может быть единственный способ. – mcgrailm

+0

Если вы сделаете это правильно, это не обязательно будет вручную. – Gregg

+0

@Gregg: Если вы знаете правильное решение для автоматического добавления классов, чтобы выбрать элементы, добавленные в DOM на более позднем этапе, поделитесь им. – Matt

0

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

+0

Да, он проверяет, является ли первый символ в строке «!» Я не могу принять событие оповестить меня – mcgrailm

+0

Существует один символ '='. – yfeldblum

+0

да извините, мой плохой я имел опечатку, вы правы, но это не ответ на вопрос спасибо за вашу помощь – mcgrailm

Смежные вопросы