JQuery,为<a> tag</a>设置属性

时间:2009-02-11 01:57:13

标签: jquery attributes

我使用$(expr).attr(“hash”,value)为HTML锚元素“a”设置“hash”属性 但是Jquery不会这样做。但如果我将expr更改为“div”,那么我可以设置 “hash”属性为“div”标签。

这个行为是xhtml规范吗?我可以设置“a”标签属性的“id”。因为id是html“a”标签的内置属性。

3 个答案:

答案 0 :(得分:14)

  

为HTML锚元素“a”设置“哈希”属性

&lt; a&gt; 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);