2012-04-15 5 views
0

Я пытаюсь получить идентификаторы из моих родительских дивыJQuery каждый() возвращает только первое найденное значение

<div id="btn1"><label class="btn"><input type="submit" value="Submit"/></label></div> 
<div id="btn2"><label class="btn"><input type="button" value="Add"/></label></div> 

JQuery функции:

$('.btn').each(function() { 
    alert($('.btn').parent().attr("id")); 
}); 

Функция возвращает значение «btn1» два раз. Он должен возвращать 'btn1', 'btn2'.

Заранее спасибо.

ответ

3

Вы снова используете селектор для .btn внутри своей петли. Измените его, чтобы обратиться к текущему элементу с помощью this

$('.btn').each(function() { 
    alert($(this).parent().attr("id")); 
}); 

Edit:

По jfriend00

действительно нет никакой причины использовать три функции JQuery вызывает здесь. jQuery следует использовать только тогда, когда он делает работу лучше.

И ссылка на некоторые из этих общих сценариев:. https://stackoverflow.com/a/4652402/803739

+1

'$ (это) .parent() атр ("ID")' можно заменить на что-то гораздо, гораздо быстрее и более compact 'this.parentNode.id'. Здесь нет причин использовать три вызова функции jQuery. jQuery следует использовать только тогда, когда он делает работу лучше. – jfriend00

+0

Если вы хотите получить действительно техническую информацию, в коде есть много чего-то неправильного, например 'input' inested in 'label' s и т. Д. Я просто прямо ответил на его вопрос. – Terry

+0

И я предложил код, который бы лучше ответил. Вам не нужно защищаться. Вы можете включить это предложение в свой ответ. Я подумал о публикации конкурирующего ответа, но решил попытаться улучшить вас. Кроме того, это мое домашнее животное, когда кто-то (OP в этом случае, а затем скопированный вами) использует jQuery в тех местах, где это неэффективный способ делать что-то. – jfriend00

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