为什么jquery选择器从旧值而不是新值中选择元素

时间:2013-09-02 07:11:52

标签: javascript jquery html jquery-selectors selector

每当我用带有选择器的jquery选择元素时,如果我得到selected元素的值它给我新的值,那么从旧值中选择元素而不是新值。我的代码在http://jsfiddle.net/HUdkN/3/

这里我使用澳大利亚值来选择元素,即使我改变了价值。它会选择元素。为什么???有人可以解释一下。

HTML CODE

    <input type="text" class="lbl" value="Australia" />
    <div id="result"></div>
    <br />
    <br/>
    <input type="button" value="check" id="check_btn">

JAVASCRIPT CODE

    function check_fnc() {
        jQuery('input').removeClass('error');
       jQuery('input[value="Australia"]').each(function () {
           $(this).addClass('error');
            $('#result').html(this.value);
       });
   }

   $('#check_btn').click(function () {
      check_fnc();
   })

3 个答案:

答案 0 :(得分:5)

这是因为[value="Australia"](例如value)与实际的HTML属性匹配,而不是当前的DOM属性,而$("input").filter(function() { return this.value == "Australia"; }).each(function() { $(this).addClass("error"); $("#result").html(this.value); }); HTML属性将始终包含元素的原始值。< / p>

要匹配当前值,您可以改为使用Attribute Equals selector

{{1}}

答案 1 :(得分:0)

你使用这个

jQuery('input[value="Australia"]') 
// (") should be remove after (value=) and after Australia

您也可以使用

function check_fnc() {
        jQuery('input').removeClass('error');
        //    I eddited here
        jQuery('input[value=Australia]').each(function () {
           $(this).addClass('error');
            $('#result').html(this.value);
       });
   }

希望这会奏效。谢谢

答案 2 :(得分:0)

您不需要为此方案使用任何过滤器。只需删除引号即使用

  $("input[value=Australia]") .each(...)