【问题标题】:Selecting a previously clicked element选择先前单击的元素
【发布时间】:2012-10-23 20:02:26
【问题描述】:

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

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

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

【问题讨论】:

  • 这个是最简单的,常用的,不应该这么慢。
  • 至少设置var $this=$(this)并在代码中使用$this;

标签: jquery select click


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    似乎你想要这样:

    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

    【讨论】:

    • 非常感谢!是的,就像这样。您在这里错过了最后一个括号和一个字母: var lastSticker=Sticker.first();
    猜你喜欢
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 2019-09-30
    相关资源
    最近更新 更多