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

时间:2014-03-26 17:38:43

标签: javascript jquery html dom input

我有一个程序在密钥启动后生成计数。 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.目前这不会改变。

1 个答案:

答案 0 :(得分:6)

您正在使用属性选择器,但是当您更改输入值时,它不会更改属性;只是财产。您可以使用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()会比属性选择器更快。