0
如果我創建了一個按鈕,添加一個單擊處理程序,然後將其插入到DOM如下:Click事件代表團消失對話框
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);
在這一點上,如果我運行$( 「#someButton」)。click(),點擊事件觸發。但是,只要我調用$(「#modalContainer」).dialog();並打開它,點擊事件不再觸發。
我假定在DOM中將元素重新定位爲Dialog打開過程的一部分的過程中,事件正在被刪除?這是正確的嗎?如果是這樣的話,最好的辦法是什麼?我可以在打開對話框後添加委託,但是我必須擔心在每次打開時添加它之前,刪除它或檢查點擊事件是否存在。
我不得不使用舊版本的jQuery(1.4.1),所以沒有on方法,並且出於性能方面的原因使用live進行了警告。
見上。我沒有訪問on方法 –
我看到$(document).delegate(「button」,「click」,function() –
。那是因爲我將事件委託給容器,它是沒有在DOM中作爲對話框打開過程的一部分重新定位,所以點擊事件不能冒泡到它?如果我在主對話框容器中給按鈕一個父容器,並刪除了事件,我想這也會工作? –