我想在jQuery(document).ajaxComplete之后禁用jQuery(document).ready(function()).. 这是我的代码。
function doStuff(){
jQuery('.type-title').click(function(e){
e.preventDefault();
if(!jQuery(this).parent('.type-top').hasClass('collapsed')){
jQuery(this).parent('.type-top').addClass('collapsed');
}
};
jQuery(document).ready(doStuff);
jQuery(document).ajaxComplete(doStuff);
一切正常,但是在新的div被ajax打开后,Click函数只适用于新的div,旧的divs点击不起作用,这意味着我应该禁用jQuery(document).ready函数。我已经做了许多事情,但没有人在工作。
如何禁用jQuery(document).ready功能? 我试试这个,但它也不起作用。
var flag = ' ';
jQuery(document).ready(function() {
flag = true;
if(flag){
doStuff();
}
});
jQuery.ajax({
success: function(){
flag = false;
doStuff();
}
});
由于
答案 0 :(得分:0)
每次你真正需要做的事情就是使用delegated event handler
而不是将事件处理程序附加到div您没有显示HTML,因此我将使用一个示例,给定,
<div class="my-container">
<div class="type-top">
<div class="type-title">...</div>
</div>
<div class="type-top">
<div class="type-title">...</div>
<div class="type-title">...</div>
</div>
</div>
您可以通过指定委派的侦听器
来侦听所有子节点上的事件function doStuff(){
jQuery(".my-container").on("click", ".type-title", function() {
e.preventDefault();
if(!jQuery(this).parent('.type-top').hasClass('collapsed')){
jQuery(this).parent('.type-top').addClass('collapsed');
}
});
}
jQuery(document).ready(doStuff);
这个监听器会在添加新的.type-title
div时自动选择事件,因此您只需在文档加载时调用一次。