每当我用带有选择器的jquery选择元素时,它就从旧值中选择元素而不是新值,如果我获得所选元素的值,它就会给我新的值。我的代码在这里,http://jsfiddle.net/HUdkN/3/。
这里我使用澳大利亚值来选择元素,即使我更改了值。它将选择元素。为什么?有人能解释一下吗。
HTML代码
<input type="text" class="lbl" value="Australia" />
<div id="result"></div>
<br />
<br/>
<input type="button" value="check" id="check_btn">
JAVASCRIPT代码
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();
})
发布于 2013-09-01 23:14:59
这是因为像Attribute Equals selector这样的[value="Australia"]
匹配实际的[value="Australia"]
属性,而不是当前的DOM属性,而value
HTML属性总是包含元素的原始值。
要匹配当前值,可以使用filter():
$("input").filter(function() {
return this.value == "Australia";
}).each(function() {
$(this).addClass("error");
$("#result").html(this.value);
});
发布于 2013-09-01 23:48:05
你用这个
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);
});
}
希望这会是work..Thanks
发布于 2013-09-02 01:41:23
对于此场景,您不需要使用任何筛选器。只需删除引号 ie,使用
$("input[value=Australia]") .each(...)
https://stackoverflow.com/questions/18567496
复制相似问题