每当我用带有选择器的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();
})
答案 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(...)