我在提交按钮时遇到小问题。点击它时我希望它执行不同的操作,但比其他操作晚两个。我一直在尝试使用来自Javascript的setTimeout并将我希望它执行的一些操作放在不同的函数中,但之后我的代码不再工作,因为它不知道什么是'这'已经了有什么帮助吗?
function test(){
$(this).addClass("voted");
$(this).val('lighted up');
}
$(".stem").click(function() {
$(this).parent().parent().parent().find(".red").addClass("filltherm");
setTimeout(test,1500);
});
答案 0 :(得分:1)
$(this)
将在函数测试中为undefined
,因为$(this)引用其事件已发生的当前元素,并且您的函数是单独的东西,使用变量来存储它的引用。
这样做:
var temp;
$(".stem").click(function() {
temp = $(this);
$(this).parent().parent().parent().find(".red").addClass("filltherm");
setTimeout(test,1500);
});
function test(){
temp.addClass("voted");
temp.val('lighted up');
}
答案 1 :(得分:1)
在[{1}}中存储对this
的引用,并将其作为参数传递给_this
。
temp
答案 2 :(得分:0)
您需要存储一个值为this
的变量:
function test($el){
$el.addClass("voted");
$el.val('lighted up');
}
$(".stem").click(function() {
var $el = $(this);
$el.parent().parent().parent().find(".red").addClass("filltherm");
setTimeout(function() {
test($el);
}, 1500);
});
答案 3 :(得分:0)
您可以使用proxy
method指定函数调用的this
:
setTimeout($.proxy(test, this),1500);