选择之前单击的元素

时间:2012-11-03 08:36:58

标签: jquery select click

我需要帮助才能选择之前点击过的元素..(我找不到答案)我的功能如下:

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

实际上它运行良好,但我发现从所有匹配元素中删除类非常虚拟,我注意到CPU渲染它非常困难。

2 个答案:

答案 0 :(得分:0)

你可以缓存一些东西,而不是不必要地遍历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');
        }
    });
}

答案 1 :(得分:0)

似乎你想这样:

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.siblings('.StickerShow').removeClass('StickerShow')$this.toggleClass('StickerShow')代替if/else