我有这个简单的调试代码(还有更多,但这是剥离版本):
function calc(container) {
console.log(container);
return 100;
};
$(".replace").text(calc(this));
控制台只返回window
,而不是元素。为什么是这样?是否存在阻止jQuery / JavaScript返回元素的东西?
答案 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
});
答案 3 :(得分:1)
只是另一种选择,因为你正在寻找元素只需使用你的函数引用本身作为text的参数。
function calc() {
console.log(this);
return 100;
};
$(".replace").text(calc);
答案 4 :(得分:0)