2016-01-20 59 views
1

如何根據其中的子項的文本值獲取單個行元素?例如,如果我有以下幾點:根據其中的子元素的文本值獲取單行元素?

<div class="row"> 
    <div class="a">AA</div> 
    <div class="b">B</div> 
    <div class="c">C</div> 
</div> 
<div class="row"> 
    <div class="a">AA</div> 
    <div class="b">BB</div> 
    <div class="c">CC</div> 
</div> 
<div class="row"> 
    <div class="a">AAA</div> 
    <div class="b">BB</div> 
    <div class="c">CC</div> 
</div> 

我怎樣才能獲得基於具有兒童類AA「的」 DIV和「B」級分度,BB和一類「C」排在第二排div與CC?

var elem = $('.row'); // How can I get a particular row based on the text values of the children elements in it? 
+0

我想答案仍然依賴,如果他想準確或只包含這些單詞。但在這裏,我假設他只想要第二排 –

+0

是的,只是第二排。我想要符合所有標準的行。 – rotaercz

回答

5

您應結合使用.filter().has()

減少匹配的元素集合到那些選擇匹配或傳遞給函數的測試的。

var elem = $('.row').filter(function(){ 
    var _this = $(this); 
    var hasA = _this.has('div.a'); 
    var hasB = _this.has('div.b'); 
    var hasC = _this.has('div.c'); 

    if(hasA && hasB && hasC){ 
     return _this.find('div.a').text().trim() == 'AA' 
      && _this.find('div.b').text().trim() == 'BB' 
      && _this.find('div.c').text().trim() == 'CC' 
    } 

    return false; 
}); 

按照要求

function getElements(valueForA, valueForB, valueForC){ 
    return $('.row').filter(function(){ 
     var _this = $(this); 
     var hasA = _this.has('div.a'); 
     var hasB = _this.has('div.b'); 
     var hasC = _this.has('div.c'); 

     if(hasA && hasB && hasC){ 
      return _this.find('div.a').text().trim() == valueForA 
       && _this.find('div.b').text().trim() == valueForB 
       && _this.find('div.c').text().trim() == valueForC 
     } 

     return false; 
    }); 
} 
+0

你可以把它寫成一個函數,它需要'AA','BB','CC'值並返回行嗎? – rotaercz

+0

太棒了。在我嘗試之後,我會選擇你的答案作爲答案。 – rotaercz

+1

'hasb'變量應該是'hasB'並且有兩個分解 –

1

嘗試使用含有選擇:

$('div:contains("AA")').parent() 
0
You can use the :contains 

$('div.a:contains("AA")') 

$('div.b:contains("BB")') 

$('div.c:contains("CC")') 
相關問題