Javascript 为什么;这";jQuery中的参数返回带有锚的href
我有一个例子:Javascript 为什么;这";jQuery中的参数返回带有锚的href,javascript,jquery,Javascript,Jquery,我有一个例子: <div id="example"> <a href="http://www.google.com/#1">Hello</a> <a href="http://www.google.com/#4">Hello</a> </div> 返回: http://www.google.com/#1 http://www.google.com/#4 但是 返回 <a href="http:
<div id="example">
<a href="http://www.google.com/#1">Hello</a>
<a href="http://www.google.com/#4">Hello</a>
</div>
返回:
http://www.google.com/#1
http://www.google.com/#4
但是
返回
<a href="http://www.google.com/#1">Hello</a>
<a href="http://www.google.com/#4">Hello</a>
为什么在第2行中,如果'this'参数添加“string”,则返回锚点的HREF属性?
jQuery文档说如果过滤器有一个函数参数,“this”是当前的DOM元素
“+this
相当于this.toString()
。在a
元素上,它返回href
(是的,这很奇怪,可能是为了与很久以前有用的东西兼容,但它在所有浏览器上都是这样做的)
在第二种情况下,您调用的不是
toString
,而是依赖于浏览器的控制台格式化方法。我们做出了不同的选择:例如,在Chrome上,它通常返回外部html(如果它很大,则作为可浏览的树)。当你说“返回”时,你的意思是这就是你在浏览器控制台中从控制台.log()调用中看到的内容吗?(我想这就是你的意思……)你把这两个结果放错方向了吗?“+this+”应该返回href的值-是,结果是反向的。我修复了这个问题,以便结果与原因正确链接。是否有返回href
的规范?当我开始写我的答案时(后来我放弃了,取而代之的是你的答案),我想说它也依赖于实现——但我不确定。我没有发现任何规范,但这是一种(鲜为人知的)事实,而且它显然是通用的。旧的理由可能很可笑,我想知道它。。。“stringifier”是href,如果不存在,则为目标。
jQuery("a").filter(function() {
console.log(this);
});
<a href="http://www.google.com/#1">Hello</a>
<a href="http://www.google.com/#4">Hello</a>