可能重复:
jQuery .attr retrieving custom attribute returns undefined
我有一个奇怪的问题,但我希望我只是做一些愚蠢的事情。我正在尝试使用jQuery在<img>
元素上创建一个新属性,这一行:
$(selector).attr('selected', 'no');
当我在Chrome中检查DOM时,无论我将值设置为什么,我都会看到selected =“selected”。
只是一些额外的信息:我不能只使用布尔值,因为我需要跟踪“是”,“否”和“部分”属性值。我正在从img本身的“onClick”事件中调用JS函数,并将this
作为参数传递。我检查了方法中的对象,并传递了正确的对象;设置属性的事实(即使是错误的值)也支持这一点。
我已经确定我在这里做了些蠢事...任何建议都会受到赞赏。
答案 0 :(得分:11)
Selected已经是HTML标准中的一个属性,因此您无法创建具有相同名称的自定义属性。在这种情况下,您应该使用data-
属性,并创建一个属性data-selected
。
在jQuery中,您使用.data()
方法处理自定义数据属性。
自定义数据属性在HTML5规范here中进行了描述。
答案 1 :(得分:5)
您可以插入data-*
自定义属性,如此
$(selector).data('selected', 'no');
您的元素将设置data-selected
属性
答案 2 :(得分:2)
如果您需要将任意数据附加到元素,请使用.data()
,而不是.attr()
。
答案 3 :(得分:1)
DOM属性与DOM属性不同;)
我建议您使用$(selector).data()
作为用例。