2013-05-16 9 views
7

Więc mam następujący kod HTML:Jak usunąć tekst między dwoma elementami z jQuery

<ul> 
    <li><a href="#">test</a></li> 
/
    <li><a href="#">test</a></li> 
/
    <li><a href="#">test</a></li> 
/
    <li><a href="#">test</a></li> 
<ul> 

Niestety ten jest generowany przez rozszerzenia Plone który rozwidloną i nie mam możliwości, aby zmienić wyjście. Lista będzie zawierała inną ilość elementów na różnych stronach.

Wszystko, co muszę zrobić, to usunąć przecięty między elementami listy. Nie mogłem wymyślić dobrego rozwiązania do tej pory.

Czy istnieje proste i wydajne rozwiązanie, aby to zrobić z JavaScript lub jQuery?

Odpowiedz

13

Zastosowanie .contents() i .filter() odfiltrować wszystkie kolejne węzły (nodeType == 3), a następnie usunąć je za pomocą .remove()

$('ul').contents().filter(function(){ 
    return this.nodeType == 3 
}).remove() 

Demo: Fiddle

+0

To jest miła próba – Ruju

+0

Wow! Wielkie dzięki! Naprawdę nie mam pojęcia, dlaczego to działa, ale tak. :) – jurihandl

+0

@jurihandl przeczytaj połączone dokumentacje, dostaniesz jakiś pomysł –

0

Spróbuj:

document.getElementsByTagName("ul")[0].textContent.replace(/\//g,"") 
+0

Dziwne, jak \ nie wyświetlało się bez formatu kodu. –

0

Przypisz wyjście do ciągu o nazwie var outPut, następnie

outPut.replace('/',''); 

output.replace('a><li','a></li'); 
Powiązane problemy