我有以下HTML,我想使用jQuery找出所有input
元素,id
以a
开头,其值大于id
以b
开头。对于此示例,下面的结果将选择#a2
和#a3
。
<div class="form">
<input id="a1" value="1" />
</div>
<div class="form">
<input id="b1" value="5" />
</div>
<div class="form">
<input id="a2" value="3" />
</div>
<div class="form">
<input id="b2" value="1" />
</div>
<div class="form">
<input id="a3" value="2" />
</div>
<div class="form">
<input id="b3" value="1" />
</div>
<div class="form">
<input id="a4" value="1" />
</div>
<div class="form">
<input id="b4" value="5" />
</div>
...
答案 0 :(得分:3)
您可以使用.filter()
条件来比较两个值:
$('[id^=a]').filter(function(){
return parseInt($(this).val(),10) > parseInt($(this).parent().next().find('input').val(),10)
});
<强> Working Demo 强>
更新:获取与条件匹配的元素的ID
$('[id^=a]').filter(function(){
return parseInt($(this).val(),10) > parseInt($(this).parent().next().find('input').val(),10)
}).map(function(){
return $(this).attr("id");
}).get().join("-")
<强> Demo 强>
答案 1 :(得分:2)
您可以使用'属性开头'选择器和filter()
来实现此目的:
var $a = $('[id^="a"]').filter(function() {
var aVal = parseInt($(this).val(), 10);
var bVal = parseInt($(this).closest('.form').next().find('input').val(), 10);
return aVal > bVal;
});
$a
变量现在将包含a
元素,其值高于其直接兄弟b
。
如何将id a =“”结尾处的所有数字输入数组?
为此,您可以使用map()
:
var aValues = $a.map(function() {
return this.value;
}).get();
console.log(aValues); // shows all the larger A values gathered.