2013-08-26 2 views
1

Я использую jQuery. У меня есть следующий HTML фрагмент:Как выбрать все элементы между двумя h2

<h1>Main Title</h1> 
    <h2>One header</h2> 
     <p>some text</p> 
     <p>more text</p> 
     <ul><li>a list</li></ul> 
    <h2>Another header</h2> 
     <a href="######">one link</a> 
     <h3>ddd</h3> 
     <p>eee</p> 

    <h2>Header 3<h2> 
    <p>This is a Paragraph</p> 

Мне нужно, чтобы получить содержание, между каждым элементом h2 для того, чтобы сделать что-то вроде этого:

First Section text 

some text 
more text 

Second section text 

one link 
ddd 
eee 

Third section text 
This is a Paragraph 

Я прочитал этот ресурс: http://www.tutorialspoint.com/jquery/jquery-selectors.htm

но все еще не может понять, как сделать то, что мне нужно.

Заранее благодарен!

+2

Что такое Jquery у вас есть пытался? – kunalbhat

+1

Попробуйте использовать ['.nextUntil()'] (http://api.jquery.com/nextUntil/). Что-то вроде '$ ('h2'). Each (function() {console.log ($ (this) .nextUntil ('h2'). Text());})' – Chad

+0

Думали ли вы, что каждый класс H2 и используя .each()? – Brad

ответ

3

Я хотел бы предложить следующее:

$('h2').each(function(){ 
    var self = $(this), 
     // gets everything between the $(this) and the next 'h2' element: 
     contents = self.nextUntil('h2'), 
     /* creates a new div with which to wrap, 
      and inserts after the current $(this): */ 
     newWrap = $('<div />').insertAfter(self); 
    // appends the contents to the new div element: 
    newWrap.append(contents); 
}); 

JS Fiddle demo.

В то время как вышеизложенное работает для его использования и иллюстрирует nextUntil() (что определенно является методом, используемым в этом сценарии), я не уверен, как я могу показать вам, как достичь ваших целей, поскольку вы, кажется, оставил ваш прецедент/требования довольно расплывчатыми.

Ссылки:

0

Хорошим решением было бы поместить содержимое вы хотите retrive в <div> тег с идентификатором, и использовать JQuery для retrive его содержание следующим образом: $('#divid').text()

+0

Я согласен с @ cole-pileguard, так как его решение наилучшим образом отвечает на ваш конкретный вопрос. – Oxymoron

Смежные вопросы