2014-07-14 90 views
0

我對jquery以及所有其他形式的web編程都比較陌生。如何將單擊事件綁定到元素後,它已被解除綁定?

我正在嘗試構建主導航。將外部頁面動態加載到單個div中的菜單,具有一些簡單的過渡效果。

到目前爲止一切運作良好,除具有.current類按鈕處於非活動狀態被點擊其他項目也是如此。

我喜歡看到其他按鈕被點擊後,活動按鈕可以再次點擊。 所以當時只有一個非活動的.current類。

我試着用.bind .unbind,。對.off,addAttr ......沒有結果。

的Jquery:

$(document).ready(function(){ 

    $('#pageWraper').css({'display':'none'}).slideDown('fast'); 

    $("a.menuLink").on("click", function(event) { 
     var pageLink = $(this).attr('href'); 

     event.preventDefault(); 
     $(".currentPage").fadeOut('slow', function(){ 
      $("#pageWraper").load(pageLink); 
     }); 

     $('#navigationWraper li a').removeClass('current'); 
     $(this).addClass('current').removeAttr('href').unbind('click'); 
    }); 
}); 

工作例如:

http://jsfiddle.net/gundra/GW8mb/1/

希望有這一個簡單的解決方案, 感謝

+1

爲什麼取消綁定點擊之前檢查的current類?只需在點擊處理程序中執行任何操作之前檢查當前的課程http://jsfiddle.net/GW8mb/4/ – Huangism

+0

是的,這是我認爲的最佳方式,@黃色理論說的是什麼...... – algorhythm

回答

2

有沒有必要取消綁定,你只需要做什麼

http://jsfiddle.net/GW8mb/5/

$(document).ready(function() { 

    $('#pageWraper').css({ 
     'display': 'none' 
    }).slideDown('fast'); 

    $("a.menuLink").on("click", function (event) { 
     event.preventDefault(); 
     var $this = $(this); 
     if (!$this.hasClass('current')) { 
      var pageLink = $this.attr('href'); 

      $(".currentPage").fadeOut('slow', function() { 
       $("#pageWraper").load(pageLink); 
      }); 

      $('#navigationWraper li a').removeClass('current'); 
      $this.addClass('current'); 
     } 
    }); 

}); 
1

難道這就是你想幹什麼?只需突出顯示活動的菜單項?

http://jsfiddle.net/GW8mb/3/

從那裏只需使用pageLink VAR在任何內容放入容器div來加載。

$('#navigationWraper li a').removeClass('current'); 
    $(this).addClass('current'); 
+0

另外,如果您嘗試如果用戶點擊活動鏈接,阻止重新加載頁面,只需檢查點擊的鏈接是否應用了「當前」類,如果是,則什麼也不做。 –

+0

event.preventDefault();將阻止頁面重新加載,在這種情況下停止標籤默認操作鏈接。 – user1572796

+0

是的,扎克,多數民衆贊成在我想要的,防止重新加載頁面。也許我應該去一些其他的:)。謝謝 – gundra

相關問題