2016-01-20 64 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")')