2014-04-12 50 views
2

使用jQuery,當我將一個元素的HTML設置爲另一個元素的HTML時,複選框輸入的checked屬性和select輸入的選定屬性不會被複制。爲什麼是這樣?例如,讓我們說一個類「老」的div包含幾個子複選框輸入,所有這些都被檢查。現在我想設置類「新」的另一個div的內部HTML作爲class「old」div的內部HTML,如下所示:將HTML從一個元素複製到另一個元素時,爲什麼不選擇子選項和輸入的選定/檢查屬性值?

$(「。new」)。html($(「。old 「)。html的());

所有這些應該檢查的複選框實際上並未被檢查。爲什麼?

+0

U可以看看[此的jsfiddle](HTTP ://jsfiddle.net/AWK9S/7/) – Arvind

回答

1

這是因爲元素的當前狀態存儲在它的DOM屬性中,而不是它的HTML屬性。分配原始HTML時,只會複製屬性。

如果你想用它的當前狀態複製的元素,使用clone()代替:

$(".new").replaceWith($(".old").clone()); 

或者更短,速度稍快:

$(".old").clone().replaceAll(".new"); 
+0

這解決了大多數問題,它複製了複選框的選中屬性,但它似乎並未應用所選值來選擇輸入 –

+1

我發現了原因 - 這是一個與他們r的jQuery的錯誤由於性能而導致修復:http://bugs.jquery.com/ticket/1294。我找到了一個解決方法。 –

相關問題