我需要帮助才能选择之前点击过的元素..(我找不到答案)我的功能如下:
showSticker:function(){
$(".Sticker").click(
function () {
if ($(this).hasClass("StickerShow"))
$(this).removeClass('StickerShow')
else {
$(".Sticker").removeClass('StickerShow'); // Here is a problem
$(this).addClass('StickerShow');
}
}
);
}
实际上它运行良好,但我发现从所有匹配元素中删除类非常虚拟,我注意到CPU渲染它非常困难。
答案 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