属性未定义

发布于 2024-11-26 23:32:36 字数 267 浏览 2 评论 0原文

下面的代码不起作用,因为 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

浪菊怪哟 2024-12-03 23:32:36

您需要包装 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

扎心 2024-12-03 23:32:36

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

The this reference in your function is a reference to a DOM element. The reference is not a jQuery object.

九厘米的零° 2024-12-03 23:32:36

因为each中的this指的是DOM元素本身而不是它的jQuery版本,并且attr方法仅在jQuery对象上定义。

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

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

Because this inside an each refers to the DOM element itself rather than the jQuery version of it, and the attr 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:

$("#foo a[href]").each(function()
{
    $(this).attr("href", "www.google.com");
});
一袭白衣梦中忆 2024-12-03 23:32:36

尝试.prop()

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

try .prop()

this.prop("href", "www.google.com");
纵情客 2024-12-03 23:32:36
$("#foo a[href]").each(function()
{
    $(this).attr("href", "www.google.com");
});

你需要 $()

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

You need the $()

装纯掩盖桑 2024-12-03 23:32:36

因为 this 不是 jQuery 对象。

尝试:

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

Because this isn't a jQuery object.

Try:

$("#foo a[href]").each(function() {
    $(this).attr("href", "www.google.com");
});
起风了 2024-12-03 23:32:36

你的意思是这个吗?

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

Did you mean this instead?

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文