一千萬個為什麽

搜索

jQuery的。以動態形式將選擇器應用於每個字段


我有一個使用這個jQuery插件動態構建的表單

http://code.google.com/p/jquery-dynamic-form/

當我復制 div 時, div 中的所有字段都會被復制,並且 - 插件文檔state- 括號將添加到字段名稱中

我也使用jQueryUI。我使用datePicker插件

$("#myDynDateField").datepicker();

當只有這個datePicker字段的一個實例時它工作正常。當我復制整個div時,datePicker字段也被復制,並且錯誤開始


inst is undefined
uncaught exception: Missing instance data for this datepicker  

1)如何使用覆蓋所有重復字段的jQuery選擇器?
2)我如何確保每個重復的datePicker字段都有其正確的實例等?

非常感謝提前,

最佳答案

我不確定您是否使用 $ .clone()來“復制”您的元素,但如果您是,則問題可能源於傳遞 true 標誌。例如 $('div#id')。clone(true)。這會克隆元素以及附加到它的事件(以及它的子元素)。但是在jquery ui元素上使用它會破壞一些東西,所以最好在復制後重新定義元素的ui信息。

雖然您沒有以這種粒度控制它,但機會很多。或多或少,您遇到了問題,因為jqueryui不知道這些重復的表單字段。我建議刪除datepicker字段的'duped'版本,並用新的datepicker字段替換它。

像這樣的東西:

// code to duplicate form
// ...
// Now replace the element with one just like it but without any events
$('#newDupedForm')
    .find('.datefield')
    .replaceWith(
        $(this).clone(false).datepicker(options)
    );

這應該從其他元素中刪除舊jquery ui datepicker的任何鏈接並實例化一個新的,但是如果有一些我缺少的東西,你總是可以從頭創建輸入元素並執行 replaceWith </代碼>與此。

轉載註明原文: jQuery的。以動態形式將選擇器應用於每個字段

猜你喜歡