2013-11-28 111 views
3

我遇到了禁用和重新啓用鏈接上的點擊事件的問題。條件禁用/重新啓用jQuery點擊事件

該設置是連續4列,每列包含一個鏈接和隱藏的內容框。當您單擊鏈接時,它將展開該行並顯示特定於該列的內容框。一旦鏈接被點擊並且該行被展開,所有其他鏈接都將淡出。然後,您將重新點擊打開的鏈接關閉該行並取消淡入其他鏈接。

我設置這種情況下的工作小提琴,這應有助於解釋它...

http://jsfiddle.net/r8K78/2/

$('.open-box').click(function(event) { 
    event.preventDefault(); 

    var $list_row = $(this).parents('.row'), 
     $column_box = $(this).parent('.column').find('.box'); 

    if ($(this).is('.open')) { 
     $(this).removeClass('open'); 
     $list_row.stop().animate({ 'padding-bottom': 0 }, 100).removeClass('expanded'); 
     // hide the content box 
     $column_box.hide(); 
     // find all links and fade them in 
     $('.box-list').find('.box-link').fadeTo(100, 1).addClass('open-box'); 
    } else { 
     $(this).addClass('open'); 
     $list_row.stop().animate({ 'padding-bottom': 200 }, 100, function() { 
      // show the content box 
      $column_box.fadeIn(100); 
     }).addClass('expanded'); 
     // find all links and fade them out 
     $('.box-list').find('.box-link').not(this).fadeTo(100, 0.25).removeClass('open-box'); 
    } 
}); 

我試圖做的是所有的褪禁用click事件將鏈接作爲唯一可點擊的鏈接。正如你所看到的,點擊淡出鏈接的行爲會讓整個事情變得糟糕。

我已經嘗試在打開操作(其他)上設置.off('click'),它可以禁用點擊其他鏈接。並採取關閉行動.on('click')。關閉操作運行後,其他鏈接仍不可點擊。

任何幫助解決這個問題將非常感激!

+0

你可以只檢查不透明度:'如果($(本)的.css( '不透明')<1)回報;'http://jsfiddle.net/r8K78/4/ –

+0

和輝煌很簡單!想把它作爲答案,以便我可以接受? –

回答

2

你可以只檢查不透明度:

if ($(this).css('opacity') < 1) return; 

SEE

但更好的是設置在淡出元素類,並檢查這個類代替,使代碼更易讀/ maintanable。

DEMO

+0

我也喜歡這種方法。好東西!真的很感謝幫助! –

相關問題