Próbuję użyć $.trim(), aby przyciąć białe znaki w pustych elementach, dzięki czemu mogę sprawdzić długość elementu, aby sprawdzić, czy ma zawartość tekstu w nim i jeśli nie usuwa go z domem.

Niektóre elementy zwracają długość większej niż 0, ponieważ mają spacje i / lub powracające wózki w nich, które są w nich zawarte.

Zasadniczo muszę znaleźć i usunąć wszelkie puste tagi, gdy mają w nich nic.

Nie przypuszczam, że ktokolwiek zna prosty szybki sposób, aby po prostu sprawdzić i usunąć wszelkie puste znaczniki w głównej zawartości strony, niezależnie od tego, czy zawierają jakieś znaki białe znaki, czy nie jakakolwiek szansa? Jestem pewien, że musi być sposób.

0
jaredwilli 20 grudzień 2011, 18:11

4 odpowiedzi

Najlepsza odpowiedź

Chcesz sprawdzić elementy tylko w body, ponieważ inaczej script tagi i inne elementy nie zawartości również zostaną usunięte: http://jsfiddle.net/6ZDNF/1/.

// filter empty elements after trimming
$("body *").filter(function() {
    return $.trim($(this).html()) === "";
}).remove(); // remove them
5
pimvdb 20 grudzień 2011, 14:20

Wystarczy użyć filtra jQuery z funkcją:

var rege = /\S/gi;
$('div').filter(function(){
  return rege.test($(this).text())
});

Po użyciu tego kodu będziesz mieć tylko Divs z tekstem w nim! Używaj ostrożnie na obrazach, ponieważ nie mają żadnego tekstu!

Wyrażenie regularne /\S/gi test dla znaku nie przestrzeni. Puste tagi nie pasują i zwrócą fałszywe.

1
daan 20 grudzień 2011, 14:19
$('body *').each(function() {
    if (!$.trim($(this).text())) {
        $(this).remove();
    };
});

Nie oczekuj jednak, że działa bardzo wydajnie.

1
Blazemonger 20 grudzień 2011, 14:29

Spróbuj tego:

$('body *').each(function(idx, element) {
    if ($(element).children().size() == 0) {
        if ($(element).text().trim() == "") {
            $(element).remove();
        }
    }
});

Może być konieczne dalsze dostrojenie selektora trochę, ale powinno to zrobić.

1
jjmontes 20 grudzień 2011, 15:09