1

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

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

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

控制台只是返回window,而不是元素。为什么是这样?有什么东西可以阻止 jQuery/JavaScript 返回元素吗?

4

5 回答 5

3

在全球范围内,this window

> this === window
true

你想要的可能是这样的:

var $replace = $(".replace");
$replace.text(calc($replace));
于 2013-11-06T02:36:45.947 回答
2

因为该calc方法不是在元素的上下文中调用的,所以您需要使用类似的东西

$(".replace").text(function(){
    return calc(this)
});

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

演示:小提琴

于 2013-11-06T02:36:20.537 回答
2

this这里指的是window对象

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

你应该使用

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

阅读此关键字

于 2013-11-06T02:36:21.507 回答
1

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

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

$(".replace").text(calc);
于 2013-11-06T02:44:40.437 回答
0

这是正确的。

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

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

参考jQuery 设置文本

于 2013-11-06T02:48:55.090 回答