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/>");

Spróbuj sam

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();

Spróbuj sam

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.