有人可以解释为什么此代码不起作用

$(document).ready(function( ) {
 $('a').each(function() {
    var linkhref = $('a').attr('href');
    if (linkhref == '/second2.php'){
    $(this).css('color','red');
    }
    });
    });


如果我将第三行更改为

 var linkhref = $(this).attr('href');


它运行。这两个var字符串不相等吗?

最佳答案

在循环的上下文中,您需要维护对迭代中数组当前元素的引用,因为您希望更新数组的每个元素。

当您使用$('a').attr('href');时,该行将在页面执行a元素时再次执行搜索(执行时),并向您返回页面上找到的第一个锚元素的href属性。因此,您将在迭代过程中丢失对数组变量的引用。

出于相同的原因,用法$(this).css('color', 'red');也可以正常工作。

09-25 16:22
查看更多