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

Why .attr does not change the attribute in each function?

本文关键字:函数 属性 attr 为什么      更新时间:2023-09-26

我有一个非常简单的脚本,应该可以更改链接的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->Source(其中内容没有更新),而不是Inspect Element

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

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

编辑您的代码并更改它:

$('.mylinks a')

您的代码引用的是div,而不是链接。哦,你去掉了mylink之前的句点,以正确地表示div的类。

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

下面是一个jsFiddle示例

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

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

class选择器从.开始。将代码更改为以下

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

如果mylinks是您给链接的类,那么您应该编写$('.mylinks')

您需要告诉它查看链接,而不仅仅是div

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

$('mylinks')将查找标记名为mylinks的元素。可能是打字错误,您应该使用.作为类选择器。如果您想选择.mylinks中的所有锚元素并设置其ID,则使用此选项。

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