2011-10-11 24 views
1

我想這是更簡單。使用一個例子來解釋:如何取消綁定活動元素上的點擊事件,並在另一個元素被點擊時再次綁定?

HTML:

<div class="boxset"> 
    <div class="box_header"> 
     h1 
    </div> 
    <div class="box"> 
     This is some text for box 1. 
    </div> 
</div> 

<div class="boxset"> 
    <div class="box_header"> 
     h2 
    </div> 
    <div class="box"> 
     This is some text for box 2. 
    </div> 
</div> 

<div class="boxset"> 
    <div class="box_header"> 
     h3 
    </div> 
    <div class="box"> 
     This is some text for box 3. 
    </div> 
</div> 

JS:

$('.box_header').bind("click", function() { 
    $('.box').not($(this).next('.box')).animate({ 
     'width': 'hide' 
    }); 
    $(this).next().animate({ 
     'width': 'show' 
    }); 
}); 

的jsfiddle:

http://jsfiddle.net/rDHMF/

下面是一個簡單的側身手風琴菜單。現在,當我點擊一個標題(h1,h2,h3)時,它的相應內容將顯示,並且之前打開的內容將關閉。不過,我可以再次點擊我剛剛點擊過的同一個標題,它會自動合同並展開。

是否有可能暫時解除頭部上的點擊事件,我只是點擊了一下,這樣當我點擊它時,'active'頭部會保持放置狀態?然後當我點擊另一個標題時重新綁定。如果是,如何?

回答

1

這應該這樣做:

$('.box_header').bind("click", function() { 
    $('.box').not($(this).next('.box')).animate({ 
     'width': 'hide' 
    }); 
    $(this).next().animate({ 
     'width': 'show' 
    }); 
}); 

你並不需要取消/重新綁定的事件,只是防止收縮包裝盒時,它同樣

+0

完美地工作。謝謝。我以爲我需要綁定/解除綁定。 – catandmouse

1

我會做,在以不同的方式。每當用戶點擊一個標題時,將一個active類添加到標題(並將其從其他標題中刪除)。如果這個頭文件已經有一個active類(只從這個頭文件中移除一個頭文件並生成動畫),請做一些其他的事情。這種方式也允許我們在活動標題上自定義樣式。

相關問題