在jQuery对话框中打开元素时,Click事件委托消失

时间:2014-03-12 06:33:15

标签: jquery jquery-ui

如果我创建一个按钮,请为其添加一个单击处理程序,然后将其插入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进行了警告。

1 个答案:

答案 0 :(得分:0)

试试这个

$(document).on("click", "button", function() {
  alert("clicked");
  });

修改

$("body").delegate("button", "click", function(){
  alert("clicked");

});