jQuery值属性选择器没有返回正确的元素数

jQuery value attribute selector not returning correct number of elements

本文关键字:元素 返回 属性 选择器 jQuery      更新时间:2023-09-26

我有一个程序,在键up后生成计数。JQuery代码:

$('.today').keyup(function() {
    var Presents = $('input[value="/"]:visible');
    $("#counter").html( "Present: " + Presents.length );
});
HTML:

<input type="text" id="1" name="1" class="today" value="/">
<input type="text" id="2" name="2" class="today" value="/">
<input type="text" id="3" name="3" class="today" value="/">
<p id="counter"></p>

计数器标签将显示3后,第一个键。当我更改文本框中的值时,计数器框中的值不会更改。例如,当我改变文本框3的值为x时,

标签现在应该包含数字2。

您正在使用属性选择器,但是当您更改输入值时,它不会更改属性;只是性质。您可以使用filter()来获取所需的内容:

$('.today').keyup(function() {
    var Presents = $('input:visible').filter(function(){
      return this.value == "/";  
    });
    $("#counter").html( "Present: " + Presents.length );
});

JSFiddle

如果需要更新属性本身,只需在事件处理程序的顶部添加以下内容:

$(this).attr('value',this.value);

JSFiddle

但这对我来说似乎很乱。此外,我相信filter()无论如何都会比属性选择器更快。