我是jQuery的新手,今天偶然发现了一些意想不到的结果。当使用jquery从LI元素中选择值时,如果值为负而不是正确值,则IE将返回0。在Chrome中,下面的代码会抛出一个带有-1的警报,但是在IE中它会显示为0.任何想法?
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script>
</head>
<body>
<script>
$(function () {
$(".ui-selected", this).each(function () {
alert(this.value);
});
});
</script>
<ol>
<li class="ui-selected" value="-1" />
</ol>
</body>
</html>
答案 0 :(得分:2)
不确定原因,但值不是列表项元素的属性。如果您需要自定义值,请使用data-value
属性(或其他)。
有关详细信息,请参阅此示例jsfiddle
<ul>
<li value="-1" data-value="-1"></li>
</ul>
$('li').each(function(){
alert(this.value); // 0
alert($(this).attr('data-value')); // -1
})
答案 1 :(得分:1)
你并没有真正使用jQuery来获取价值。我不知道IE为什么会这样,但我会说尝试使用 原生.attr()
或getAttribute
来获取值。
alert( $(this).attr('value') );
alert( this.getAttribute('value') );
@Josiah Ruddell注意到.attr()
无效。
答案 2 :(得分:0)
编辑:请勿使用'value'使用任何其他属性名称。 查看更新的working example here
即使"value"
不是有效的HTML属性,jQuery也无法识别它,并且它的属性选择器工作正常。
没有选择器无效的东西。它要么返回要么返回。
<ul>
<li class="ui-selected" myVar="-1" >
Hi
</li>
</ul>
$(".ui-selected").each(function(){
var liValue = $(this).attr('myVar');
var intVal = parseInt(liValue);
// Just to be safe you've retrieved only an integer!
alert(liValue);
});