2012-09-07 19 views
12

Próbuję zrobić pokaz slajdów z obrazów, a wszystko, co mam, to edytor tekstu sformatowanego, który wprowadza obrazy i tekst. Z tego html:jQuery wybierz HTML między dwoma identyfikatorami stringów

<h1>title</h1> 
<p>description...</p> 

<p>#slider</p> 

<p><img src="a.jpg" /></p> 
<p><img src="b.jpg" /></p> 
<p><img src="c.jpg" /></p> 

<p>#end-slider</p> 

Jak wybrałbyś kod HTML pomiędzy #slider i # end-slider?

Jest to koncepcja podobna do wydobywania tekstu pomiędzy [LINK] i [/ link] w komentarzach na blogach np [link] http://google.com [/ link]

+0

jest '# slider' zawartość identyfikatora lub tekstowej? – undefined

+0

#slider jest po prostu tekstem –

+2

Niezupełnie "podobny", nawias kwadratowy '[znaczniki]' może być parsowany tylko przez regex - i zwykle jest wykonywany po stronie serwera w celu odkażania (znaczniki zagnieżdżone itp.). Teraz prezentujesz rzeczywiste elementy DOM za pomocą węzłów tekstowych, na pewno * możesz * sparsować je za pomocą wyrażenia regularnego, ale są na to lepsze sposoby. –

Odpowiedz

6

Spróbuj tego:

$('p:contains("#slider")').nextUntil('p:contains("#end-slider")') 

Aktualizacja:

var end = $('p:contains("#end-slider")'); 
$('p:contains("#slider")').nextUntil(end).andSelf().add(end) 

http://jsfiddle.net/63kQC/

+0

To zadziałało dobrze! Zastanawiasz się również, czy istnieje sposób, aby wybrać to wszystko, więc identyfikatory i html, tj. #slider html # end-slider? –

+0

@PaulMason Tak, spróbuj zaktualizowanego kodu. – undefined

+0

Doskonale! Dziękujemy –

8
$(document).ready(function() { 
    $('p:contains("#slider")') 
     .nextUntil('p:contains("#end-slider")') 
     .wrapAll("<div id='stuff'></div>"); 
    var required = $('#stuff').html(); 
}); 

http://jsfiddle.net/483kL/

+1

niesamowite :) :) :) :) – AdityaParab

+1

Oczywiście selektor ': contains' może złapać pewne niezamierzone rzeczy, np. '

#slider *** headkeyboard *** dsgdfhdfjdfj

'. OP może być jednak w porządku. –

2

Spróbuj

$(document).ready(function(){ 
    $('p:contains("#slider")').nextUntil('p:contains("#end-slider")'); 
});