以下代码不起作用,因为attr未定义:
$("#foo a[href]").each(function()
{
this.attr("href", "www.google.com");
});
但是这段代码确实:
$("#foo a[href]").each(function()
{
this.href = "www.google.com";
});
为什么?
答案 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");
});