Javascript Ajax和jQuery处理程序
我学习Ajax,我有这个问题 例如,我的标记是Javascript Ajax和jQuery处理程序,javascript,jquery,ajax,Javascript,Jquery,Ajax,我学习Ajax,我有这个问题 例如,我的标记是 <div id='ajax-container'> .. <div class='some-class-with-handler'> .. </div> .. </div> 然后Ajax重载了#Ajax容器-block中的所有内容,但是。带有处理程序-block的某些类仍然包含在#Ajax容器-block的新内容中。同时,onClick处理程序不会绑定到新的。具有处理程序块的
<div id='ajax-container'>
..
<div class='some-class-with-handler'>
..
</div>
..
</div>
然后Ajax重载了#Ajax容器-block中的所有内容,但是。带有处理程序-block的某些类仍然包含在#Ajax容器-block的新内容中。同时,onClick处理程序不会绑定到新的。具有处理程序块的某些类。如何重建此绑定?有两种选择:
jQuery.live
:
更新:根据文档,从1.7开始,live
已被弃用。您可以使用上述文档中提到的语法:
$( selector ).live( events, data, handler ); // jQuery 1.3+
$( document ).delegate( selector, events, data, handler ); // jQuery 1.4.3+
$( document ).on( events, selector, data, handler ); // jQuery 1.7+
单击处理程序
var someClassClickHandler = function(){
..
};
$('.some-class-with-handler').click(someClassClickHandler);
$.ajax({
success: function () {
$('.some-class-with-handler').click(someClassClickHandler);
}
});
这是因为新的
。带有handler
的某个类是新元素,您不能以这种方式绑定新元素。以这种方式更改处理程序-
$(document).ready(function() {
..
$(document).on('click','.some-class-with-handler', function(){
..
});
..
}
发布如何将ajax响应插入到
#ajax容器块中
委托您的事件我刚才确实键入了这个。不要使用.live()
,它早就被弃用了。改为使用事件委派。@putvande是的,你是对的。我已经更新了我的答案。
$(document).ready(function() {
..
$(document).on('click','.some-class-with-handler', function(){
..
});
..
}