2013-01-06 11 views
7

Czy istnieje sposób w jQuery do klonowania zawartości elementu? Nie cały element, tylko treść (dzieci).jquery clone only element's content

Coś podobnego do tego, co .html() robi, ale jestem również zainteresowany klonowania zdarzenia dołączone do treści.

Szukałem na .clone, ale wydaje się, że klonowanie jest cały element.

Dzięki.

+0

Zapętlić wszystkie dzieci i skopiować? – ZombieSpy

+3

'$ cloned.children()'? – undefined

+0

zdarzenia dołączone do elementów nie są klonowane –

Odpowiedz

18

doua Beri, z odniesieniem do the jQuery API documentation for .clone() okaże się, że to, co chcesz .clone(true,true). Spowoduje to utworzenie głębokiej kopii elementu (lub zbioru elementów), w tym wszystkich powiązań danych i zdarzeń.

Następnie mają do wyboru dwie opcje co do sposobu korzystania .clone(true,true).

  1. Klonuj dzieci indywidualnie, aby uzyskać kolekcję jQuery zawierającą klony dzieci.

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

  2. Klon element zewnętrzny, otrzymując zbiór jQuery zawierającą klon elementu zewnętrznego, który sam zawiera klony dzieci.

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

Jest nieco akademickie, które podejście pan przyjąć. W obu przypadkach elementy potomne są dostępne zbiorczo lub indywidualnie, aby można było nimi manipulować i/lub wstawiać do DOM, chociaż kod w tym celu byłby nieco inny.

4

Jeśli lubisz głęboko kopię tylko klonowania dzieci:

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

i zamiast dołączania zdarzeń do poszczególnych elementów dołączyć zdarzenie do elementu pojemnika, który jest słuchanie elementów podrzędnych, że sposób, w jaki zdarzenia będą uruchamiane, dopóki element pojemnika pozostanie, nawet jeśli dodasz/usuniesz tysiąc elementów wewnątrz kontenera. Możesz to zrobić na tagu body, jeśli nigdy nie chcesz, aby twoje wydarzenia zniknęły.

Użyj 'na' metody do wiązania zdarzeń tak:

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

Co z wydarzeniami, które nie są bańkami? –

+0

zdarzenia nie są klonowane. –

+0

@DouaBeri Próbuję powiedzieć w mojej odpowiedzi, że nie można klonować zdarzeń, ale zamiast wielu zdarzeń powiązanych z wieloma różnymi elementami, należy je powiązać z rodzicem takim jak "ciało" i słuchać dzieci jak w przykładzie kodu powyżej. – nimrod