如何解除/清除Ajax加載後註冊的事件?如何解除ajax加載後註冊的jquery事件?
我有以下工作流程的Web應用程序:用戶點擊一個按鈕,這將通過推出的fancybox彈出形式:
$('.launchPopUp').click(function(){
var url = 'something';
$.fancybox({
href : url,
type : 'ajax'
});
});
當URL的內容是搜索表單。這裏是一個簡化版本:
This is a pop-up window.
<a id="searchButton">Search</a>
<script type="text/javascript">
$(document).ready(function(){
$(document).on('click', '#searchButton', function() {
//Do something here...
});
});
</script>
在彈出框中,用戶搜索內容,從而得到一個記錄表。選擇記錄後,彈出框將被關閉,所選內容將被添加回頁面。
一切按預期工作。但是,當用戶關閉fancybox並重新打開它時,我發現jquery事件被多次觸發。我想知道是否有任何方法來清除這些動態的jQuery事件。
請注意,由於事件基於用戶輸入(在打開彈出窗口之前),因此無法在「基本」頁面中定義jquery事件。
謝謝!
解決方案:
在我的Ajax代碼,我取代了 「文件」,以 「格」:
<script type="text/javascript">
$('#somediv').ready(function(){
$('#somediv').on('click', '#searchButton', function() {
//Do something here...
});
});
</script>
http://api.jquery.com/off/是你在找什麼 – Will
注意,你不需要等待文檔準備好綁定到文檔本身。 –
謝謝。既然我有很多事件,有沒有一種簡單的方法來解除所有事件?我試過.empty()沒有運氣。 –