“this”在jQuery $(selector).each函数中指的是页面

时间:2013-10-03 15:31:26

标签: javascript jquery

在什么情况下,下面代码中的“this”和“element”是指页面而不是选择器?

$("a.tag")
    .each(
        function (index, element) {
           console.log("'this' is " + this);
           console.log("'element' is " + element);
        }
    )

产生以下元素的次数:

'this' is file:///C:/Projects/PlaceTag/PlaceTag/default.html# default.html:50
'element' is file:///C:/Projects/PlaceTag/PlaceTag/default.html# 

2 个答案:

答案 0 :(得分:6)

thiselement始终引用.each()回调中的DOM元素。

您的代码通过+连接运算符将DOM元素强制转换为字符串 这将返回元素的href属性。

相反,您可以将对象本身传递给log()

console.log("'this' is ", this);

答案 1 :(得分:0)

每次使用.each时,您的上下文都会发生变化,因此'this'会发生变化。简单的解决方案是添加对“this”的引用。

var self = this;
$("a.tag")
.each(
    function (index, element) {
       console.log("'self' is " + self);
       console.log("'this' is " + this);
       console.log("'element' is " + element);
    }
)