Подтвердить что ты не робот

Событие jquery live для добавления элементов dom

Я хочу добавить класс к любому элементу 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');
});
4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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

Ответ 3

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