“这个”正在返回[对象窗口],而不是元素

时间:2013-11-06 02:34:40

标签: javascript jquery html this

我有这个简单的调试代码(还有更多,但这是剥离版本):

function calc(container) {
    console.log(container);
    return 100;
};

$(".replace").text(calc(this));

控制台只返回window,而不是元素。为什么是这样?是否存在阻止jQuery / JavaScript返回元素的东西?

5 个答案:

答案 0 :(得分:3)

在全球范围内,this window

> this === window
true

你想要的可能是这样的:

var $replace = $(".replace");
$replace.text(calc($replace));

答案 1 :(得分:2)

因为在元素的上下文中没有调用calc方法,所以你需要使用像

这样的东西
$(".replace").text(function(){
    return calc(this)
});

在这种情况下,在calc引用当前元素的回调方法中调用this方法。

演示:Fiddle

答案 2 :(得分:2)

this这里指的是窗口对象

$(".replace").text(calc(this));

你应该使用

$(".replace").text(function(){
    return calc(this); // here this refers to the current element with class replace
});

阅读this keyword

答案 3 :(得分:1)

只是另一种选择,因为你正在寻找元素只需使用你的函数引用本身作为text的参数。

function calc() {
    console.log(this);
    return 100;
};

$(".replace").text(calc);

答案 4 :(得分:0)

没错。

因为当您调用该函数时,当前范围是窗口。

如果要使用该元素,请改用函数参数。

参考jQuery set text