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;