定义 jquery attr 变量的正确方法?
right way to define jquery attr variables?
有人能解释一下为什么这段代码不起作用吗
$(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 字符串不相等吗?
当您使用选择器时
var $a = $('a');
$a
将是所有 a
DOM 元素的数组。
你可以这样做:
var $a = $('a');
$.each($a, function(indexOfArray, element) {
if (element.href == '/second2.php') {
$(element).css('color','red');
}
});
或者:
$(document).ready(function() {
$('a').each(function() {
var $a = $(this);
if ($a.attr('href') == '/second2.php') {
$a.css('color', 'red');
}
});
});
您想尽量减少使用选择器的次数,因此分配给 $a
。
在循环的上下文中,您需要在迭代中维护对数组当前元素的引用,因为您希望更新数组的每个元素。
当您使用 $('a').attr('href');
时,该行将调用 另一个 搜索(在执行时)页面中的 a
元素和 return 你在页面上找到的第一个锚元素的 href
属性。因此,您将丢失对迭代中数组变量的引用。
出于同样的原因,用法 $(this).css('color', 'red');
工作正常。
有人能解释一下为什么这段代码不起作用吗
$(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 字符串不相等吗?
当您使用选择器时
var $a = $('a');
$a
将是所有 a
DOM 元素的数组。
你可以这样做:
var $a = $('a');
$.each($a, function(indexOfArray, element) {
if (element.href == '/second2.php') {
$(element).css('color','red');
}
});
或者:
$(document).ready(function() {
$('a').each(function() {
var $a = $(this);
if ($a.attr('href') == '/second2.php') {
$a.css('color', 'red');
}
});
});
您想尽量减少使用选择器的次数,因此分配给 $a
。
在循环的上下文中,您需要在迭代中维护对数组当前元素的引用,因为您希望更新数组的每个元素。
当您使用 $('a').attr('href');
时,该行将调用 另一个 搜索(在执行时)页面中的 a
元素和 return 你在页面上找到的第一个锚元素的 href
属性。因此,您将丢失对迭代中数组变量的引用。
出于同样的原因,用法 $(this).css('color', 'red');
工作正常。