Przegląd jQuery - metoda contents()
Przykład
Znajduje wszystkie węzły tekstowe w akapicie i otacza je tagiem粗体.
$("p").contents().filter(function(){ return this.nodeType != 1; }).wrap("<b/>");
Definicja i użycie
Metoda contents() uzyskuje potomków każdego elementu w zestawie dopasowanych elementów, w tym węzłów tekstowych i komentarzy.
Gramatyka
.contents()
Szczegółowe wyjaśnienie
Jeśli podany jest obiekt jQuery reprezentujący zestaw elementów DOM, metoda .contents() pozwala nam na pobranie bezpośrednich potomków tych elementów w drzewie DOM i utworzenie nowego obiektu jQuery z dopasowanych elementów. .contents() i .children() Metoda jest podobna, z tą różnicą, że pierwsza zawiera w wynikowym obiekcie jQuery zarówno węzły tekstowe, jak i elementy HTML.
Metoda .contents() może również być używana do uzyskania dokumentu zawartości iframe, pod warunkiem, że iframe znajduje się w tej samej domenie co strona główna.
Pomyśl o poniższym <div> z kilkoma węzłami tekstowymi, które są oddzielone przez dwa elementy przerwania linii (<br>):
<div class="container"> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. <br /><br /> Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. <br /> <br /> Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. </div>
Możemy użyć metody .contents() do przekształcenia bloków tekstu w dobrze zorganizowane akapity:
$('.container').contents().filter(function() { zwróć to, czy this.nodeType == 3; ) .wrap('<p></p>') .end() .filter('br') .remove();
Ten kod najpierw odbiera zawartość <div class="container">, następnie filtry jego węzłów tekstowych, które są opakowane w etykiety akapitów. To jest osiągnięte poprzez testowanie właściwości .nodeType elementu; ta właściwość zawiera kod liczbowy wskazujący typ węzła; węzły tekstowe używają kodu 3. Zawartość będzie ponownie filtrowana, tym razem dla elementów <br />, które będą usuwane.