属性未定义
下面的代码不起作用,因为 attr 未定义:
$("#foo a[href]").each(function()
{
this.attr("href", "www.google.com");
});
但是这段代码可以:
$("#foo a[href]").each(function()
{
this.href = "www.google.com";
});
为什么?
The following code this not work, because attr is undefined:
$("#foo a[href]").each(function()
{
this.attr("href", "www.google.com");
});
But this code does:
$("#foo a[href]").each(function()
{
this.href = "www.google.com";
});
Why??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
您需要包装
this
...$(this)
attr
是 jQuery 对象的方法,href
是元素节点的属性You need to wrap
this
...$(this)
attr
is a method of a jQuery object,href
is a property of an element node函数中的
this
引用是对 DOM 元素的引用。引用不是 jQuery 对象。The
this
reference in your function is a reference to a DOM element. The reference is not a jQuery object.因为each中的
this
指的是DOM元素本身而不是它的jQuery版本,并且attr
方法仅在jQuery对象上定义。因此,要使用
attr
方法,您需要将 DOM 元素包装在 jQuery 对象中:Because
this
inside an each refers to the DOM element itself rather than the jQuery version of it, and theattr
method is only defined on the jQuery object.So, to use the
attr
method you need to wrap the DOM element in a jQuery object:尝试.prop()
try .prop()
你需要 $()
You need the $()
因为
this
不是 jQuery 对象。尝试:
Because
this
isn't a jQuery object.Try:
你的意思是这个吗?
$(this).attr("href","www.google.com");
?Did you mean this instead?
$(this).attr("href","www.google.com");
?