attr未定义

时间:2011-07-27 13:26:22

标签: javascript jquery attr

以下代码不起作用,因为attr未定义:

$("#foo a[href]").each(function()
{
    this.attr("href", "www.google.com");
});

但是这段代码确实:

$("#foo a[href]").each(function()
{
    this.href = "www.google.com";
});

为什么?

7 个答案:

答案 0 :(得分:10)

您需要打包this ... $(this)

attr是jQuery对象的方法,href是元素节点的属性

答案 1 :(得分:3)

函数中的this引用是对DOM元素的引用。引用不是 jQuery对象。

答案 2 :(得分:2)

因为每个内部的this引用了DOM元素本身而不是它的jQuery版本,并且attr方法仅在jQuery对象上定义。

因此,要使用attr方法,需要将DOM元素包装在jQuery对象中:

$("#foo a[href]").each(function()
{
    $(this).attr("href", "www.google.com");
});

答案 3 :(得分:1)

尝试.prop()

this.prop("href", "www.google.com");

答案 4 :(得分:0)

$("#foo a[href]").each(function()
{
    $(this).attr("href", "www.google.com");
});

您需要$()

答案 5 :(得分:0)

你的意思是这样吗?

$(this).attr("href","www.google.com");

答案 6 :(得分:0)

因为this不是jQuery对象。

尝试:

$("#foo a[href]").each(function() {
    $(this).attr("href", "www.google.com");
});