2015-11-19 4 views
1

Вот как я динамически создаю элементы с помощью #bir.каждый() работает только для первого элемента (динамически созданного)

setInterval(function(){ 
    baseBody.attr("id", "bir"); 
    baseBody.after("<td id=eki><p id=test'>Test</p></td>"); 

    $('#bir').each(function() { 
     $(this).after("test"); 
    }); 
}, 1000); 

Таким образом, поле идет testtesttesttesttesttest...

... но только для первого элемента. #bir создается правильно для всех элементов.

Что здесь не так?

ответ

2

Это выбирает что-то по id:

$('#bir') 

Поскольку должен быть только один элемент на странице с этой уникальной id имеет смысл ЕАП только петли один раз. И я думаю, что jquery вернет только первый, который он найдет, поскольку нет причин смотреть дальше после поиска, поскольку id уникален. Вы должны зацикливаться на классе или что-то еще, если будет много элементов, которые вы ожидаете найти.

+1

В частности, html с элементами, имеющими одинаковый идентификатор, технически нарушает спецификацию html. –

1

У меня это работает. То, что я сделал это:

... 
    $(baseBody).each(function() { 
     $(this).after("test"); 
    }); 
... 

Он не работал, когда я говорил id, только объект JQuery.

Спасибо, ребята!

+0

Из чистого интереса, что такое baseBody? Я не вижу в вашем коде, откуда он и что это такое. – AtheistP3ace

+0

Это переменная, которую я назначил CSSPath. –

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