onClick中的Javascript setTimeout

时间:2014-04-23 11:07:21

标签: javascript jquery submit settimeout

我在提交按钮时遇到小问题。点击它时我希望它执行不同的操作,但比其他操作晚两个。我一直在尝试使用来自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);
  });

4 个答案:

答案 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);