2013-12-05 2 views
0

Итак, у меня есть следующий div <div id="selected"></div>. Я добавляю элементы <div class="item" id="someID">blah</div> в #selected. В какой-то момент я запускаю следующее:jQuery .each получить .attr детей

var ids = []; 
$('#selected').each(function(){ 
    ids.push($(this).attr('id')); 
}); 

но ничего не получаю. Единственная команда, которая там работает, - $(this).html(). Ничто другое не работает. Почему это??

ответ

0

Вы хотите

var ids = []; 
$('#selected div').each(function(){ //descendent selector added 
    ids.push($(this).attr('id')); 
}); 

Ваш код не работает, потому что $ («# выбрано») только возвращая вам один узел, так как существует только один узел с этим идентификатором (как и должно быть, идентификаторы должны быть уникальными)

+0

Спасибо! Это отлично поработало. – user3044830

1

ID уникален, поэтому не используйте .each() с ним

вы хотите получить детей элемента с идентификатором selected поэтому используйте $('#selected').children()

Попробуйте .map()

var ids = $('#selected').children().map(function(){ 
    return this.id; 
}).get(); 

fiddle Demo

+0

все мои идентификаторы уникальны. Это не работает вообще. Так что даже если я наберу $ (this) .attr ('class'), он все равно ничего не возвращает. Как я уже сказал, я могу использовать только $ (this) .html(), который, кажется, работает просто отлично ... – user3044830

+0

@ user3044830 См. -> http://jsfiddle.net/KJcv5/ –

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