當我replaceWith
一個元素帶出一個DOM,然後replaceWith
它回來,註冊到它的事件不會觸發。我需要事件保持完好。活動沒有註冊後replaceWith
這裏是我的javascript:
var replacement = $(document.createElement('span'));
var original = $(this).replaceWith(replacement);
replacement
.css('background-color', 'green')
.text('replacement for ' + $(this).text())
.click(function() {
replacement.replaceWith(original);
});
在演示中,當你點擊一個元素,它會被替換使用replaceWith
另一個元素。當您單擊新元素時,將使用replaceWith
替換爲原始元素。然而,點擊處理程序不再工作(我認爲它應該)。
您是否最終使用活動重新附件,或者您是否能夠使Live活動正常工作?我正在做同樣的事情,並希望從您的經驗中學習。 – 2011-02-04 03:00:52
@Erick T,我很抱歉,但我真的不記得了。差不多兩年前我問過這個問題。我認爲使用`$ .fn.live`不起作用,因爲我正在處理實際的元素,而不是選擇器。 (`$ .fn.delegate`(它當時不存在)可能會作爲`live`替代品)。由於我選擇的答案,我假設我最終重新附加了事件處理程序。您也可以嘗試深入克隆元素(IIRC可能會將事件處理程序保留在最新的jQuery中)。 – strager 2011-02-04 03:07:49