2012-09-07 10 views
12

Sto cercando di creare una presentazione di immagini e tutto quello che ho è un editor di testo avanzato per inserire immagini e testo. Quindi da questo html:jQuery seleziona HTML tra due identificatori di stringa

<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> 

Come ti selezionare il codice HTML tra #slider e # end-cursore?

E 'un concetto simile a estrazione di testo tra [link] e [/ link] nei commenti del blog ad esempio: [link] http://google.com [/ link]

+0

è '# slider' un contenuto di ID o il testo? – undefined

+0

#slider è solo testo –

+2

Non esattamente "simile", parentesi quadre '[tags]' può essere analizzato solo da espressioni regolari - e di solito viene eseguito lato server per la sanitizzazione (tag nidificati, ecc.). Ora stai presentando gli attuali elementi DOM con i nodi di testo, sicuro che * potresti * analizzarli con espressioni regolari, ma ci sono modi migliori per farlo. –

risposta

6

Prova questo:

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

Aggiornamento:

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

http://jsfiddle.net/63kQC/

+0

Grazie, ha funzionato bene! Chiediti inoltre se esiste un modo per selezionarlo tutto, quindi gli identificatori e il codice html i.e. #slider html # end-slider? –

+0

@PaulMason Sì, prova il codice aggiornato. – undefined

+0

Eccellente! Grazie –

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

awesome :) :) :) :) – AdityaParab

+1

Ovviamente, il selettore ': contains' può catturare alcune cose non volute, ad es. '

#slider *** headkeyboard *** dsgdfhdfjdfj

'. OP può essere ok con quello però. –

2

Prova questa

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