2015-09-25 2 views
0
$(document).ready(function() { 
    var idPost = $('.post-outer').attr('id'); 
    $('.post-outer').attr('name', idPost); 
}); 

Когда вы запускаете JS выше, он принимает только первый «ID», повторяющийся в другом «DIV». Что происходит:Получите «id» и добавьте в каждый div (name = «id»)

<div class="post-outer" id="001" name="001">teste1</div> 
<div class="post-outer" id="002" name="001">teste2</div> 
<div class="post-outer" id="003" name="001">teste3</div> 

Я хотел случиться так:

<div class="post-outer" id="001" name="001">teste1</div> 
<div class="post-outer" id="002" name="002">teste2</div> 
<div class="post-outer" id="003" name="003">teste3</div> 
+1

Первая строка '$ ('пост-внешний '). Атр (' ID')', получает селектор, указывающий на все '.post-outer' элементов, но Метод 'attr' получает свойство' 'id'' ** первого элемента, на которое указывает селектор **. С другой стороны, 'attr' * setter * применяется к * каждому элементу * в селекторе, что означает, что все три будут иметь имя' '001" '. Селекторы jQuery являются, по существу, обертками вокруг массивов элементов, и поэтому любой метод, который функционирует как геттер/сеттер, демонстрирует это поведение (getters извлекают из первого элемента, сеттеры применяются ко всем элементам). –

ответ

-1

Demo

$('.post-outer .post-footer .post-footer-line.post-footer-line-2 .post-labels a').each(function(index, el) { 
    $(this).parents('.post-outer:eq(0)').attr('itemtype', $(this).attr('href')); 
}); 
3

Используйте .each() метод:

$('.post-outer').each(function() { 
    $(this).attr('name', $(this).attr('id')); 
}); 

перебрать объекта JQuery, выполняя функцию каждый согласованный элемент.

2

Функция .attr() может принимать функцию в качестве аргумента. Он вызывает функцию повторно для каждого элемента (например, .each()), а возвращаемое значение - это новое значение атрибута.

$('.post-outer').attr('name', function() { 
    return this.id; 
}); 

Это, по существу эквивалентно ответу mevius, но это не вызывает .attr() неоднократно.

+0

Хотя мой ответ работает, это, безусловно, лучший ответ. Спасибо, что поделился. – rnevius

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