javascript函数在ajax之后停止工作
我的代码如下:javascript函数在ajax之后停止工作,javascript,jquery,ajax,Javascript,Jquery,Ajax,我的代码如下: <div id="action-buttons" class="container"> <button type="button" name="MyButton" id="closeButton">close RMA</button> </div> <div> <button type="button" id="refreshButtons">refresh Buttons</button&g
<div id="action-buttons" class="container">
<button type="button" name="MyButton" id="closeButton">close RMA</button>
</div>
<div>
<button type="button" id="refreshButtons">refresh Buttons</button>
</div>
按钮停止触发事件处理程序,因为它们不再连接到事件处理程序 你的 行完全销毁
#操作按钮元素中的元素,并用新元素替换它们。这些新元素没有连接到事件处理程序,而旧元素是
您可以通过两种方式解决此问题:
再把他们联系起来
使用事件委派
事件委派可能是您想要的。将事件挂接到一个不会更改的容器上(例如,#操作按钮
),但告诉jQuery不要调用处理程序,除非事件通过一个与您指定的选择器匹配的元素:
$("#action-buttons").on('click', "#closeButton", function () {
alert('some text');
});
更多信息请访问
现场示例:
$(文档).ready(函数(){
var计数器=0;
$(“#刷新按钮”)。在('单击',函数()上{
//在这里模拟ajax
setTimeout(函数(){
++计数器;
$(“#操作按钮”).html(
“关闭RMA”+“计数器+”
);
}, 10);
});
$(“#操作按钮”)。在('单击',“#关闭按钮”,函数()上{
警报(“某些文本”);
});
});代码>
关闭军事革命
刷新按钮
Ajax响应后的
;您现有的按钮将被删除,更新的按钮将被插入DOM中。因此,您绑定到旧按钮的任何事件都会自动从上下文中删除。因此,在处理这种情况时,您需要在附加事件时使用jquery的事件委派技术,如下所示:
$(document).on('click',"#closeButton", function () {
alert('some text');
});
在上述情况下;事件首先通过document
附加并侦听,然后将其委托给id为“#closeButton”的按钮(如果DOM中存在)。我希望我已经澄清了你的疑问。点击“关闭按钮”而不是“刷新按钮”时,你的警报就会响起。如果按钮又是相同的标记,为什么要替换按钮?@Andreas:这只是我问题的一个例子,真正的代码太大,无法粘贴到这里。
$("#action-buttons").html(HtmlResult);
$("#action-buttons").on('click', "#closeButton", function () {
alert('some text');
});
$(document).on('click',"#closeButton", function () {
alert('some text');
});