2017-05-08 19 views
4

我有這樣的HTML:如何選擇具有特定文本的框?

<h5>something</h5> 
<ul> 
    <li class="name">John</li> 
    <li class="age">21</li> 
</ul> 
<h5>specific text</h5> 
<ul> 
    <li class="name">Peter</li> 
    <li class="age">19</li> 
</ul> 
<h5>something else</h5> 
<ul> 
    <li class="name">Ali</li> 
    <li class="age">62</li> 
</ul> 

我要選擇這個部分:

<h5>specific text</h5> 
<ul> 
    <li class="name">Peter</li> 
    <li class="age">19</li> 
</ul> 

的邏輯是<h5>標籤的內容。我想要那個是specific text。實際上預期的結果是一個既有名字又有年齡的數組。有些事情是這樣的:var res = ['Peter', 19];

但我的代碼選擇所有這些<ul> S:

$('ul').map(function(){ 
    var res = [$(this).find('li.name').text(), $(this).find('li.age').text()]; 
}); 

我怎樣才能解決呢?

回答

7

您可以使用:contains()查找包含所需特定字符串的H5。然後使用.next()來獲取與h5

$("h5:contains('specific text')").next('ul').map(function(){ 
 
    var res = [$(this).find('li.name').text(), $(this).find('li.age').text()]; 
 
    console.log(res) 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<h5>something</h5> 
 
<ul> 
 
    <li class="name">John</li> 
 
    <li class="age">21</li> 
 
</ul> 
 
<h5>specific text</h5> 
 
<ul> 
 
    <li class="name">Peter</li> 
 
    <li class="age">19</li> 
 
</ul> 
 
<h5>something else</h5> 
 
<ul> 
 
    <li class="name">Ali</li> 
 
    <li class="age">62</li> 
 
</ul>

0

jQuery腳本從UL列表中獲取數據有關ul

$('ul').map(function(){ 
 
    var res = [$(this).find('li.name').text(), $(this).find('li.age').text()]; 
 
    // console.log(res); 
 
    
 
}); 
 
var htmVal = ''; 
 
$('h5').each(function(index){ 
 
htmVal = $(this).html(); 
 
if(htmVal == 'something else'){ 
 
var detail ={name:$(this).next().find('li.name').html(),age:$(this).next().find('li.age').html()}; 
 
console.log(detail); 
 
} 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<h5>something</h5> 
 
<ul> 
 
    <li class="name">John</li> 
 
    <li class="age">21</li> 
 
</ul> 
 
<h5>specific text</h5> 
 
<ul> 
 
    <li class="name">Peter</li> 
 
    <li class="age">19</li> 
 
</ul> 
 
<h5>something else</h5> 
 
<ul> 
 
    <li class="name">Ali</li> 
 
    <li class="age">62</li> 
 
</ul>