Почему .attr не меняет атрибут в каждой функции? - PullRequest
0 голосов
/ 09 марта 2012

У меня есть очень простой скрипт, который должен изменить ссылки id s, но почему-то он не работает. Вот код:

$(document).ready( function() {
    $('mylinks').each(function(index) {
        $(this).attr({
            'id': 'mylink-'+index
        });
    });
});


<div class="mylinks">
<a href="http://www.google.com">google</a>
<a href="http://www.google.com">google2</a>
</div>

Я пытаюсь изменить mylinks на:

  • div.mylinks
  • div.mylinks a

но ни один из них не работал. Чего мне не хватает?

РЕДАКТИРОВАТЬ

Большинство из вас правы. Я должен использовать $('.mylinks a').each( ..., но проблема была в том, что я искал RMB -> Source (где содержимое не обновляется) вместо Inspect Element.

Ответы [ 9 ]

3 голосов
/ 09 марта 2012

Селектор mylinks соответствует каждому элементу <mylinks> на странице.

Для сопоставления <a> элементов, которые являются потомками члена класса mylinks , вам нужно .mylinks a.

3 голосов
/ 09 марта 2012

Отредактируйте свой код и измените это:

$('.mylinks a')
2 голосов
/ 09 марта 2012
Селектор

class начинается с .. изменить код как показано ниже

$('.mylinks a').each(function(index) {
        $(this).attr('id', 'mylink-'+index);
});
2 голосов
/ 09 марта 2012

Ваш селектор неверен для моих ссылок. Это должно быть $('.mylinks a').each()

2 голосов
/ 09 марта 2012
$('.mylinks a').each(function(){ ... });
2 голосов
/ 09 марта 2012

Ваш код относится к div, а не к ссылкам.Да, и вы пропустили точку до mylinks, чтобы правильно обозначить класс div.

$('mylinks').each( должно быть $('.mylinks a').each(

Вот пример jsFiddle .

$('.mylinks a').each(function(index) {
    $(this).attr({
        'id': 'mylink-' + index
    });
});​
1 голос
/ 09 марта 2012

Вы должны сказать это, чтобы посмотреть ссылки, а не только div. Это работает:

$(document).ready( function() {
    $('.mylinks a').each(function(index) {
        $(this).attr("id", "mylinks"+index);
    });
});
1 голос
/ 09 марта 2012

Если mylinks - это класс, который вы даете своей ссылке, вы должны написать $('.mylinks')

0 голосов
/ 09 марта 2012

$('mylinks') будет искать элемент с именем тега mylinks. Может быть, это опечатка, вы должны использовать . для выбора класса. Если вы хотите выбрать все элементы привязки внутри .mylinks и установить там идентификаторы, используйте это.

$(document).ready( function() {
    $('.mylinks a').each(function(index) {
        $(this).attr({
            'id': 'mylink-'+index
        });
    });
});
...