如果我创建一个按钮,请为其添加一个单击处理程序,然后将其插入DOM,如下所示:
var modalContainer = $('<div id="modalContainer" style="display:none;" />')
modalContainer.append($('<input type="button" id="someButton" />'));
this_.template = modalContainer;
$( this_.template ).delegate( ":button", "click", function() {
alert("clicked");
});
$('#someElement").after(this_.template);
此时如果我运行$(&#34;#someButton&#34;)。click(),则会触发click事件。但是,只要我调用$(&#34; #modalContainer&#34;).dialog();并打开它,点击事件不再触发。
我假设在重新定位DOM中的元素作为Dialog打开过程的一部分的过程中,事件被删除了?这是正确的吗?如果是这样,最好的解决方法是什么?我可以在对话框打开后添加委托,但是我必须担心删除它或检查点击事件是否存在,然后在每次打开时添加它。
我不得不使用旧版本的jQuery(1.4.1),因此没有on方法,并且出于性能原因使用live进行了警告。
答案 0 :(得分:0)
试试这个
$(document).on("click", "button", function() {
alert("clicked");
});
修改强>
$("body").delegate("button", "click", function(){
alert("clicked");
});