如何解除/清除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()没有运气。 –