2013-01-06 87 views
7

有沒有在jQuery克隆元素的內容的方法?不是整個元素,只有內容(兒童)。jQuery只克隆元素的內容

類似於.html()正在做的事情,但我也有興趣克隆附加到內容的事件。

我在看.clone,但它似乎是克隆整個元素。

謝謝。

+0

循環所有的孩子並複製它們? – ZombieSpy

+3

'$ cloned.children()'? – undefined

+0

附加到元素的事件未被克隆 –

回答

18

Doua腳氣,參照the jQuery API documentation for .clone()你會發現你想要的是.clone(true,true)。這將對元素(或元素集合)進行深層複製,包括所有數據和事件綁定。

然後,您可以選擇兩種方式來使用.clone(true,true)

  1. 克隆孩子個別給一個jQuery收集包括孩子的克隆。

    var $childClones = $("#myElement").children().clone(true,true);

  2. 克隆外元件,得到了一個jQuery集合包括所述外元件的克隆,本身包含子的克隆。

    var $clone = $("#myElement").clone(true,true);

它是哪種方法你採用有些學者。在這兩種情況下,後代元素都可以共同或單獨地被操縱和/或插入到DOM中,儘管這樣做的代碼會略有不同。

4

如果你喜歡深副本只是克隆的孩子:和

$('#footer-flair').children().clone()

,而不是附加事件的特定元素附加一個事件到是聽子元素的容器元素,這樣,你的只要容器元素停留,即使添加/移除容器內的一千個元素,事件也會觸發。如果你不希望你的事件消失,你可以在身體標籤上做到這一點。

使用「上」方法來綁定事件,像這樣:

$('body').on('click', 'button.className', function(){ 
    alert('button clicked'); 
}); 
+0

那些不會冒泡的事件呢? –

+0

事件沒有被克隆。 –

+0

@DouaBeri我想在我的回答中說的是,你不能克隆事件,而是將許多事件附加到許多不同的元素上,將它們綁定到像「body」這樣的父類,並像代碼示例中那樣監聽孩子以上。 – nimrod