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

4

我有一个程序,它在按键松开后生成一个计数。

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个回答

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()比属性选择器更快。


你的回答让问题更有意义,现在我两个都明白了 ;) - A. Wolff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接