2

所以我有:

<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>

当我单击跨度并使用萤火虫检查跨度的属性时,属性“selected”更改为“selected”而不是“N”。

所以结果是selected="selected" !!??

怎么没变selected="N"

4

2 回答 2

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()

于 2012-07-16T17:06:16.973 回答
0

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

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

于 2012-07-16T17:58:54.143 回答