jQuery click事件和settimeout

时间:2018-08-12 16:07:56

标签: javascript jquery settimeout

您可以使用下面的github页面链接访问完整代码。 Link

我正在开发配对游戏 当我单击每个li选择器时,li的类别将更改,因此可以更改打开的卡。但是我想在2秒后完成,li选择器的类将更改类。

$(document).ready(function () {
    $(".card").each(function () {
        $(this).click(function () {
            $(this).addClass("card open show"); // When click li element class will change to card open show
            setTimeout(function(){
                $(".card open show").addClass("card");
            }, 2000);
        });
    });
});

当我单击li选择器时,类将更改为card open show,而我想在2秒后将其更改为card

我不知道为什么它不起作用。

3 个答案:

答案 0 :(得分:2)

您需要使用$().removeClass()

从元素中删除类。

$(".card open show").addClass("card");更改为

 $(this).removeClass("open show");

也无需遍历元素。您可以将click事件直接附加到元素上

$(document).ready(function () {
 $(".card").click(function () {
    // since element already have class card, no need to add same class again
    // only add the open and show class
    $(this).addClass("open show");
    setTimeout(function () {
      $(this).removeCLass(" open show");
    }, 2000);
  });

});

答案 1 :(得分:0)

您可以使用$().toggleClass()在超时前后切换类:

let element = this;
$(element).toggleClass("open show");
setTimeout(function() {
  $(element).toggleClass("open show");
}, 2000);

答案 2 :(得分:0)

假设每次单击任何一个li,它将在2秒后关闭。

$(this).click(function () {

var ele = $(this);
 $(this).addClass("open show"); 
            setTimeout(function(){
                ele.removeClass("open show");
            }, 2000);
        });