2013-08-26 16 views
6

Jak mogę zaznaczyć pusty znacznik za pomocą jQuery.Jak mogę wybrać cały pusty znacznik przy użyciu jQuery.?

Chcę wybrać

<p></p> 
<p style="display: block"></p> 
<p> </p> 
<p>  </p> 
<p>&nbsp;</p> 

i nie

<p>0</p> 
<p>Test</p> 

Próbowałem z :empty ale to nie działa z moich opcji. Każda pomoc w tym zakresie jest bardzo doceniana.

+0

Czy możesz zamieścić przykład z ': empty', którego próbowałeś? – Botis

+0

w rzeczywistości nie są puste. spacje są tam – Rab

+0

@Ravi: Moje przeprosiny, przypadkowo wysłałem to dwa razy. co powinienem zrobić dalej? – laradev

Odpowiedz

7

Możesz to zrobić, używając jQuery.filter().

var empty_p = $('p').filter(function(){ 
    return !$.trim($(this).text()); 
}).get(); 
+0

Czy to zwróci elementy zawierające tylko spacje? – doppelgreener

+0

@ JonathanHobbs Przepraszam, nie testowałem tego ... teraz edytowałem odpowiedź z testowanym kodem. –

2

Zastosowanie jQuery filter:

$('p').filter(function() { 
    return !$(this).text().trim(); 
}); 
+0

To nie jest sposób użycia ["wykończenia()"] (http://api.jquery.com/jQuery.trim/) –

+1

@koala_dev to nie jest wykończenie jQuery. [String.trim()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim) –

+0

Ups, prawda, przepraszam za zamieszanie –

1
$(document).ready(function(){ 
    $("p").each(function(index){ 
     var html = $(this).html(); 
     html = filter(html, " "); 
     html = filter(html, "&nbsp;"); 

     if ($(this).html() == ""){ 
      //YOUR CODE 
     } 
    }); 
}); 

function filter(string, char){ 
    while(string.indexOf(char) > 0){ 
     string.replace(char, ""); 
    } 
} 

JS FIDDLE

+0

Zawiodą dla białych znaków i'   ' –

+1

Ah, zawsze pomaga odczytać pytanie Przypuszczam, że wprowadziłem pewne zmiany. – Seano666

-1

jeden sposób, aby to zrobić, używając wyrażeń regularnych zamiast trim():

$('p').filter(function() { 
    return !/\S/.test($(this).text()); 
}) 

(JSFiddle)

pamiętać, że ta (i wszystkich innych rozwiązanie oparte na $(this).text()) będzie również pasować np Niniejszy ustęp:

<p><a href="http://example.com">&nbsp;</a></p> 

lub nawet:

<p><img src="http://example.com/image.gif"></p> 

W zależności od tego, co chcesz zrobić z ust, to może lub nie może być to, co chcesz. Jeśli nie, będziesz potrzebował czegoś bardziej skomplikowanego; szczegóły będą zależeć od tego, co dokładnie chcesz uznać za "pusty" akapit.

Powiązane problemy