我有JQuery UI小部件附加了DOM元素來完成這項工作。這個小部件在_destroy方法中刪除了這個元素,所以它會自行清理。如何替換具有自定義元素的JQuery UI小部件
一切都很好,直到我嘗試用一些其他小部件替換小部件。原始小部件被刪除(銷燬方法將刪除小部件自定義元素),但新的小部件不附加。
最好的說明是代碼,所以這裏是例子:http://jsfiddle.net/71xdxLvp/3/
的問題是:如何更換部件我?
注:
我知道問題出在哪裏,但我不知道如何解決它。
問題是在方法replaceWith
的jquery.js - 看到代碼中的註釋:
return this.each(function() {
var next = this.nextSibling, // nextSibling is widgets custom element
parent = this.parentNode;
// Widget is removed and the widgets custom element is removed too
jQuery(this).remove();
if (next) {
// New widget should be prepended to the widgets custom element, but
// the element is already removed from DOM.
// Method before() check this and won't append new widget
jQuery(next).before(value);
} else {
jQuery(parent).append(value);
}
});
編輯:
replaceWith
由第三方框架稱爲Apache Wicket
部件它創建DOM元素是CodeMirror
不幸的是'.replaceWith'被第三方庫(Wicket)調用,所以我不能自己模擬它。 :( – 2015-04-02 14:02:37
我看到了;檢查編輯是否有幫助,我通常會推薦閱讀你的小部件的結構,因爲replaceWith可能不是依賴兄弟的唯一函數 – blgt 2015-04-02 14:30:03
感謝您的更新 - 這是一個混亂的方式,但我認爲它可以工作,Widget也是第三方(見我的編輯),所以我不能輕易修改它的結構。 – 2015-04-08 08:30:42