如何继续选择jquery中具有相同属性值的元素。然后比较这两个中哪一个具有更大的价值 这是我到目前为止所拥有的。我遇到的问题是,如果对中的第一个数字较大,我就不会得到任何输出。
<script>
$(function(){
var j = [];
$('.loo').each(function(index){
var grp = $(this).attr('data-x');
var num = $(this).val();
var id = $(this).attr('id');
var pair_val = pair_value(grp);
var pair_id = pair_identity(id);
console.log(get_max(num, pair_val, id, pair_id));
});
function get_max(num1, num2, id1, id2){
var decide = 0;
if(num1 > num2){
decide = id1;
}else{
decide = id2;
}
return decide;
}
function pair_value(conn){
var pair = $("input[data-x="+ conn +"]").val(); //my problem is here
return pair;
}
function pair_identity(conn){
var pair_id = $("input[data-x="+ conn +"]").attr('id'); //my problem is here
return pair_id;
}
});
</script>
HTML:
<p>
<input type="text" id="e" name="e" class="loo" value="1" data-x="a">
</p>
<p>
<input type="text" id="f" name="f" class="loo" value="10" data-x="a">
</p>
<p>
<input type="text" id="g" name="g" class="loo" value="37" data-x="b">
</p>
<p>
<input type="text" id="h" name="h" class="loo" value="25" data-x="b">
</p>
<p>
<input type="text" id="i" name="i" class="loo" value="11" data-x="c">
</p>
<p>
<input type="text" id="j" name="j" class="loo" value="12" data-x="c">
</p>
答案 0 :(得分:2)
var highest = new Array();
$('.loo').each(function(){
if(!highest[$(this).data('x')] || parseInt($(this).val()) > highest[$(this).data('x')] )
highest[$(this).data('x')] = parseInt($(this).val());
});
这将循环遍历.loo
的所有实例,并检查是否还没有条目,或者当前保存的值是否低于当前元素值,在这种情况下,它将更新数组条目。
这将为您留下一个数组,其中包含values
的所有可能值的所有最大data-x
编辑
对不起,存在一些语法错误。
编辑2
较短版本
答案 1 :(得分:1)
你毫无疑问的问题是你在比较字符串(用.val()
获得),而不是数字。这有一个非常不同的行为 - 有效地决定哪一个按字母顺序排在另一个之前。
更改此行:
if(num1 > num2){
到
if(parseInt(num1,10) > parseInt(num2,10)){