2011-08-07 71 views
2

我有一個錨點,當點擊使得ajax調用加載一些HTML到一個div,然後加載腳本。我想在第一次點擊後取消綁定該事件,並將其替換爲在顯示和隱藏該div之間切換的另一個單擊事件。我已經有了這麼多,但我沒有嘗試註冊切換div工作的點擊事件。jQuery點擊事件 - 第一次點擊使得Ajax調用,下面的點擊切換

$('#anchor').click(function() { 
    $('#div').load('file.html', function() {  
     $.getScript('script.js');  
     $('#anchor').unbind(); 
    }); 
}); 

回答

2
$('#anchor').click(function(e) { 
    e.preventDefault(); // prevent the browsers following the link 
    $('#div').load('file.html', function() {  

     // make sure to bind once the new script has been included 
     // i.e. within .getScript's callback 
     $.getScript('script.js', function() { 
      $('#anchor').unbind("click").click(myShowHideFunc); 
     });  
    }); 
}); 
+0

作品完美,謝謝! – user883036

1

與事件的命名空間,幫助這樣,當我們解除綁定其他點擊處理程序將不會受到取消綁定僅當前的事件處理試試這個。

$('#anchor').click('click.anchor', function() { 

    $('#div').load('file.html', function() {  
     $.getScript('script.js', function(){  
      $('#anchor').unbind('click.anchor').click(function(){ 
      $('#div').toggle(); 
      }); 
     }); 
    }); 
}); 
+2

我喜歡'one'處理程序,但在這種情況下,我會說它可能會導致問題 - 例如請求失敗,迫使用戶重新加載頁面,因爲鏈接不能再次點擊。 – karim79

+0

我同意你@karim – ShankarSangoli

+0

@ karim79當使用.one – rkw