首页 > 解决方案 > 为什么关键字“this”在 jQuery removeClass 上不起作用?

问题描述

我可以用来this从我点击的按钮中获取 id,但我无法选择点击的按钮this来运行我的 setTimeout 函数。

$(".btn").click(function () {
      var userChosenColour = $(this).attr("id");
      $(this).addClass("pressed");
      setTimeout(function() {$(this).removeClass("pressed");} , 100);
    })

但是,我可以通过不使用以下方式运行它this

$(".btn").click(function () {
  var userChosenColour = $(this).attr("id");
  $(this).addClass("pressed");
  setTimeout(function() {$("#" + userChosenColour).removeClass("pressed");} , 100);
})

我对关键字有什么误解this吗?

标签: javascriptjquery

解决方案


关键字与其他语言有this很大不同...我推荐this & object原型了解更多。

对于您的问题,一种简单且推荐的解决方案是:

$(".btn").click(function () {
  var $this = $(this) // Store the jQuery object and use it everywhere
  var userChosenColour = $this.attr("id");
  $this.addClass("pressed");
  setTimeout(function() {$this.removeClass("pressed");} , 100);
})

推荐阅读