我使用$(expr).attr(“hash”,value)为HTML锚元素“a”设置“hash”属性 但是Jquery不会这样做。但如果我将expr更改为“div”,那么我可以设置 “hash”属性为“div”标签。
这个行为是xhtml规范吗?我可以设置“a”标签属性的“id”。因为id是html“a”标签的内置属性。
答案 0 :(得分:14)
为HTML锚元素“a”设置“哈希”属性
< a> element(HTMLLinkElement)已具有DOM Level 0 hash
属性。它像window.location.hash一样用于读取或设置元素的href
引用的URL末尾的“...#anchor”部分。
设置a.hash
,无论是直接还是通过jQuery的attr()
包装器,只需在链接的URL中设置锚名称。你可能通过调用DOM方法a.setAttribute('hash', value)
故意说你想要一个实际的属性,除了这在IE6 / 7中不起作用,因为它存在一个长期存在的错误,它会混淆属性和属性。
这是向元素添加自定义非标准属性的问题之一,您永远不知道它何时会与现有名称冲突。 HTML5会建议您将自定义属性限制为以“data-”开头的名称,但一般来说,如果可以的话,最好找到另一种存储数据的方式。
答案 1 :(得分:6)
可能您的问题是hash
标记没有<a>
属性。也许您正在寻找name
属性,或者您想要更改链接href
中的哈希值,在这种情况下,您将不得不解析链接文本并使用正则表达式替换哈希值
答案 2 :(得分:0)
设置哈希的另一个选项。这仅适用于表达式返回元素的位置。这是因为hash是实际dom元素的属性。
$(expr).each(function() {
this.hash = value;
});
如果您需要测试以查看其标签是否使用此
$(expr).is('a').each(function() {
this.hash = value;
});
如果您确实想要附加一些自定义属性,我建议您使用数据方法添加值
$(expr).data('myHash', value);