【问题标题】:jQuery value attribute selector not returning correct number of elementsjQuery值属性选择器未返回正确数量的元素
【发布时间】:2014-03-26 17:38:43
【问题描述】:

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

【问题讨论】:

    标签: javascript jquery html dom input


    【解决方案1】:

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

    【讨论】:

    • 你的回答让这个问题更有意义,现在我都明白了;)
    猜你喜欢
    • 2011-09-23
    • 1970-01-01
    • 2023-03-08
    • 2023-03-20
    • 2013-02-03
    • 2016-11-30
    • 2011-07-06
    • 2012-01-12
    • 1970-01-01
    相关资源
    最近更新 更多