为什么jQuery中的“this”参数会返回带有锚点的href

时间:2013-02-20 16:07:35

标签: javascript jquery

我有这个例子:

<div id="example">
    <a href="http://www.google.com/#1">Hello</a>
    <a href="http://www.google.com/#4">Hello</a>
</div>

这两行jQuery:

jQuery("a").filter(function() {
    console.log(""+this+"")
});

返回:

 http://www.google.com/#1

 http://www.google.com/#4

但是

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>​

为什么第2行,返回锚IF的HREF属性'this'这个参数添加一个“字符串”? jQuery文档说如果过滤器有一个函数参数,"this" is the current DOM element

1 个答案:

答案 0 :(得分:12)

""+this相当于this.toString()。在a元素上它返回href(是的,这很奇怪,可能与很久以前有用的东西兼容,但这就是它在所有浏览器上的作用)。

在第二种情况下,您不是调用toString,而是调用依赖于浏览器的控制台格式化方法。做出了不同的选择:例如,在Chrome上,它通常返回外部html(如果它很大,则为可浏览的树)。