怎么来attr()给我一个奇怪的结果?

时间:2012-07-16 17:03:36

标签: javascript jquery

所以我有:

<span selected="Y" onclick="change();">Click here to test~</span>


<script src="jquery-1.7.2.js"></script>

<script>
function change()
{
  $('span[selected=Y]').attr("selected","N");
}
</script>

当我点击范围并使用firebug检查范围的属性时,属性“selected”更改为“selected”而不是“N”。

所以结果是选中=“选中” !! ??

为什么它没有改为selected="N"

2 个答案:

答案 0 :(得分:4)

selected不是span的有效属性,而是您可以使用data

<span data-selected="Y">Click here to test~</span>

的jQuery

$('span[data-selected=Y]').on('click', function() {
  $(this).data('selected', 'N');
});

详细了解jQuery .data()

答案 1 :(得分:0)

原因是对于有效的元素(例如<option>个元素),selected是布尔属性,布尔属性的唯一有效值是属性本身。 jQuery的attr()方法正在尝试并且无法聪明并“纠正”selected属性的值。

显然,jQuery没有正确处理无效属性,这在某种程度上是可以理解的。您可以选择使用元素本身的getAttribute()方法(适用于所有主流浏览器),或者更好,使用前缀为data-的属性,该属性根据HTML5规范有效,浏览器和jQuery支持。