Jquery 选择以前单击的元素

Jquery 选择以前单击的元素,jquery,select,click,Jquery,Select,Click,我需要帮助来选择以前单击的元素。。我找不到答案我的功能如下: showSticker:function(){ $(".Sticker").click( function () { if ($(this).hasClass("StickerShow")) $(this).removeClass('StickerShow') else { $(".Stick

我需要帮助来选择以前单击的元素。。我找不到答案我的功能如下:

showSticker:function(){
    $(".Sticker").click(    
        function () {
            if ($(this).hasClass("StickerShow"))
                $(this).removeClass('StickerShow')
            else {
                $(".Sticker").removeClass('StickerShow'); // Here is a problem
                $(this).addClass('StickerShow');
            }
        }
    );
}

实际上它工作得很好,但我发现从所有匹配的元素中删除类是非常愚蠢的,我注意到CPU很难呈现它。

您可以缓存一些东西,而不必遍历DOM:

var $stickers = $('.Sticker');

// ...

showSticker: function() {
    $stickers.click(function() {
        var $this = $(this);

        if ($this.hasClass("StickerShow")) {
            $this.removeClass('StickerShow')
        } else {
            $stickers.removeClass('StickerShow'); // Here is a problem
            $this.addClass('StickerShow');
        }
    });
}

似乎你想要这样:

showSticker:function(){
    var Stickers=$(".Sticker");
    var lastSticker=Stickers.first();
    Stickers.click(    
        function () {
            $this=$(this);
            if ($this.hasClass("StickerShow"))
                $this.removeClass('StickerShow')
            else {
            // Not worry about removeClass from element which has no such class
                lastSticker.removeClass('StickerShow');
                $this.addClass('StickerShow');
                lastSticker=$this;
            }

        }
    );
}

如果贴纸是同级的,您可以使用简单的$this.sibbles.StickerShow.removeClass'StickerShow'和$this.toggleClass'StickerShow'而不是if/else

这是最简单、最常见的方法,而且不会太慢。至少设置var$this=$this并在代码中使用$this;非常感谢你!是的,就是这样。您在这里遗漏了最后一个括号和一个字母:var laststacker=Sticker.first;