除焦点

时间:2018-10-08 03:24:41

标签: javascript jquery

对于当前关注的选择器,我可以使用哪个选择器遍历页面除了上的所有输入元素?

这是我目前拥有的:

total = 0.00;

$(".numbers").each(function() {
  total += parseFloat($(this).val());
});
<input type="number" class="numbers" />

6 个答案:

答案 0 :(得分:1)

我不喜欢在循环本身之外初始化变量,所以我个人建议.toArray().reduce()

$("input:first").focus();   //for demo only

var total = $(".numbers:not(:focus)").toArray().reduce((sum, element) => sum + Number(element.value),0);
console.log(total);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="numbers" value="5" />
<input type="text" class="numbers" value="2" />
<input type="text" class="numbers" value="12" />

答案 1 :(得分:0)

$(".numbers:not(':focus')").each(function(){
    total += parseFloat($(this).val());
});

答案 2 :(得分:0)

$('.numbers:not(:focus)').each(function(){

})

答案 3 :(得分:0)

$(".numbers:not(':focus')").each(function(index,element){
    total += parseFloat($(element).val());
});

答案 4 :(得分:0)

我更喜欢这样:

$.each($('.number').not(':focus'), function(idx, ele) {
    total += parseFloat(ele.value);
});

答案 5 :(得分:0)

使用:not(:focus)是您要查找的反选择。另外,您可以$('.numbers').not(':focus')来过滤现有集合:

function calculate() {
  let total = $(".numbers:not(:focus)").get().reduce((sum, el) =>
    (sum += parseFloat(+el.value), sum), 0);

  console.log('Sum:',total)
}

$('input').on('keydown', calculate)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Change the number of the textbox:</p>
<input class="numbers" value="1" />
<input class="numbers" value="2" />
<input class="numbers" value="3" />
<input class="numbers" value="4" />