为什么.attr不会更改每个函数中的属性?

时间:2012-03-09 16:37:27

标签: javascript jquery attr

我有一个非常简单的脚本应该更改链接'id,但不知何故它不起作用。这是代码:

$(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 - &gt; Source(内容未更新)而不是Inspect Element

9 个答案:

答案 0 :(得分:3)

编辑您的代码并进行更改:

$('.mylinks a')

答案 1 :(得分:3)

选择器mylinks匹配页面上的每个<mylinks>元素。

要匹配 mylinks 类成员后代的<a>元素,您需要.mylinks a

答案 2 :(得分:2)

您的代码是指div,而不是链接。哦,你在mylinks之前遗漏了一段时间来正确地表示div的类。

$('mylinks').each(应为$('.mylinks a').each(

这是 jsFiddle example

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

答案 3 :(得分:2)

$('.mylinks a').each(function(){ ... });

答案 4 :(得分:2)

您的选择器对于mylinks不正确。它应该是$('.mylinks a').each()

答案 5 :(得分:2)

class选择器以.开头。更改代码如下

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

答案 6 :(得分:1)

如果mylinks是您为链接提供的课程,那么您应该写$('.mylinks')

答案 7 :(得分:1)

你需要告诉它看链接,而不仅仅是div。这有效:

$(document).ready( function() {
    $('.mylinks a').each(function(index) {
        $(this).attr("id", "mylinks"+index);
    });
});

答案 8 :(得分:0)

$('mylinks')将查找标记名为mylinks的元素。可能是你应该使用.类选择器的拼写错误。如果要选择.mylinks中的所有锚元素并设置id,请使用此。

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