6

可能重复:
jQuery .attr 检索自定义属性返回未定义

我有一个奇怪的问题,但我希望我只是在做一些愚蠢的事情。<img>我正在尝试使用 jQuery 在元素上创建一个新属性,这一行:

$(selector).attr('selected', 'no');

当我在 Chrome 中检查 DOM 时,我只看到 selected="selected",无论我将值设置为什么。

只是一些额外的信息:我不能只使用布尔值,因为我需要跟踪“是”、“否”和“部分”属性值。我正在从 img 本身的“onClick”事件中调用一个 JS 函数,并this作为参数传递。我检查了方法中的对象,并传递了正确的对象;设置属性的事实(即使设置了错误的值)也支持这一点。

我很确定我在这里做了一些愚蠢的事情......任何建议都将不胜感激。

4

4 回答 4

11

Selected 已经是 HTML 标准中的属性,因此您不能创建具有相同名称的自定义属性。在这种情况下,您应该改用data-属性并创建一个属性data-selected

在 jQuery 中,您使用该.data()方法处理自定义数据属性。

自定义数据属性在此处的 HTML5 规范中进行了描述。

于 2012-10-18T07:51:17.193 回答
5

你可以像这样插入一个data-*自定义属性

$(selector).data('selected', 'no');

您的元素将设置一个data-selected属性

于 2012-10-18T07:51:17.523 回答
2

如果您需要将任意数据附加到元素,请使用.data(),而不是.attr()

于 2012-10-18T07:51:31.970 回答
1

DOM 属性与 DOM 属性不同;)

我建议$(selector).data()用于您的用例。

于 2012-10-18T07:51:25.637 回答