根据子元素的文本值获取单行元素?

时间:2016-01-20 09:10:36

标签: javascript jquery

如何根据其中子项的文本值获取单行元素?例如,如果我有以下内容:

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

如何基于具有子类的行来获得第二行&#39; a&#39;与AA和一个班级&#39; b&#39;与BB和一个班级&#39; c&#39; div与CC?

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

4 个答案:

答案 0 :(得分: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;   
    }); 
}

答案 1 :(得分:1)

您可以使用:contains选择器来处理此类请求:

https://api.jquery.com/contains-selector/

类似于:

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

这应该返回所有匹配项,然后您可以从中获取任何匹配项。

答案 2 :(得分:1)

尝试使用包含选择器:

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

答案 3 :(得分:0)

    You can use the :contains

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

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

$('div.c:contains("CC")')