如何根据其中子项的文本值获取单行元素?例如,如果我有以下内容:
<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?
答案 0 :(得分:5)
将匹配元素集合减少到与选择器匹配的元素或通过函数测试。
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")')