2012-11-03 89 views
1

我需要幫助選擇以前點擊的元素..(我無法找到答案)我的功能如下:選擇以前點擊的元素

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

其實它的作品不錯,但我發現它非常假人從所有匹配的元素中刪除類,我注意到CPU很難渲染它。

+1

這是最簡單的,平常的,不應該這麼慢。 –

+0

至少設置'var $ this = $(this)'並在代碼中使用$ this; –

回答

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

+0

非常感謝!完全像這樣。你已經錯過了這裏的最後一個括號和一個字母:var lastSticker = Sticker .first(); – Taras

+0

確定修正語法 –

0

你會不必要地緩存了一些東西,而不是遍歷DOM:

​​3210
相關問題