2012-06-15 68 views
0

我試圖用jQuery創建隱藏/顯示按鈕。當點擊.cminus時,它需要隱藏.arrowwrap和.commentbody,並用cplus替換它自己的類。然後,如果.cplus被點擊相反需要發生。被替換的類的jquery事件

問題1:在示例後.cminus被替換.cplus以下時,.cplus不火單擊時單擊事件。

(編輯問題2移到分開票) 問題2:我沒有達到隱藏.commentbody右/顯示它

HTML:

<div class="commentline"> 
    <div class="carrowholder"> 
     <div class="cminus"></div> 
     <div class="arrowwrap"> 
     </div> 
    </div> 
    <div class="commentholder"> 
     <div class="commenttitle"> 
      Title 
     </div> 
     <div class="commentbody"> 
      Body 
     </div> 
    </div> 
</div> 

jQuery代碼:

$('.cminus').click(function(e) { 
    $(this).next('.arrowwrap').hide(); 
    $(this).parent().next('.commentholder .commentbody').hide(); 
    $(this).removeClass('cminus'); 
    $(this).addClass('cplus'); 
}) 

$('.cplus').click(function(e) { 
    alert("clicked cplus"); 
    $(this).next('.arrowwrap').show(); 
    $(this).addClass('cminus'); 
    $(this).removeClass('cplus'); 
}) 

回答

2

使用.toggleClass('cminus');等,然後有一個事件處理程序或使用。對/ .live父元素,以允許委派的事件。

至於

$(this).parent().next('.commentholder .commentbody').hide(); 

我覺得.commentholder是多餘的,因爲你是下一個指定它獲取下一個兄弟。

+0

關於問題1.被替換的類不被識別嗎?你可以擴展你的解決方案嗎?並且移除.commentholder不會解決第二個問題。 – DavidW

+0

如果添加了一個類的帖子綁定,那麼除非使用委託事件,否則該事件不會綁定到該元素。 –

+0

明白了。修復了單個事件偵聽器的第一個問題。仍然想知道第二個,雖然 – DavidW

0

如果你只是希望顯示和隱藏我建議使用.toggle(「showorhide」)

我已經創建了一個基本的小提琴給你試用之間切換。

http://jsfiddle.net/LsWuR/2/

希望這有助於。

+0

我不能使用$('。commentbody')。直接由於文件中有很多,我需要具體的父 - >。commenthoder - >。commentbody – DavidW

+0

做了一個快速更新是相對的。應該是你要找的http://jsfiddle.net/LsWuR/2/ – AJak