我想为元素分配自定义值。似乎.attr(customName,value)可以正常工作。如果该属性不存在(它不会)jQuery创建它并放置我提供的值。稍后我可以使用.attr(customName)读取值,就像它是一个普通的HTML已知属性一样。我知道有一种HTML5 .data()方法用于此类事情,但它并不持久。如果我将html移动到磁盘然后检索它,那么使用data()设置的任何内容都将消失,而.attr()会直接进入HTML。
我没有在.attr()文档中看到它保证创建一个新的attr名称,如果它不能识别你给它的东西,所以我有点紧张。以这种方式使用.attr()是否安全?感谢。
答案 0 :(得分:1)
您应该使用数据来创建自定义属性。它使用.data()跨浏览器工作,你可以将它保留在你的标记中,这样它就不会被重置。 Nettuts Data Attr Article
E.g。
<a href="#" data-custom-description="lorum ipsum">tool tip</a>
$('a').data('custom-description');
- &gt;返回lorum ipsum
答案 1 :(得分:1)
您不应该使用attr()
创建一个不在HTML规范中的属性,因为它会使您的页面无效,并导致其他问题。
我假设.data()
不忠实的意思是值不会出现在渲染源中,因为它们保存在jQuery所持有的缓存对象中。
您可以使用attr()
设置数据属性:
$('#foo').attr('data-bar', 'wibble');
答案 2 :(得分:1)
是的,你可以这样做。但是,它不是有效的HTML。你要做的是创建一个新的XHTML分支。您可以创建自己的DTD进行验证,但这可能不是必需的。
请记住,您可能会遇到某些浏览器(尤其是旧版本的IE)的问题。但是,大多数浏览器只会忽略未知属性,因此您可以随意使用它们。您是否关心HTML无效是您的电话,但出于实际目的,只要您避开某些保留的属性名称(例如id
或class
),它就可以正常工作。
然而,您可能想退后一步并重新评估您要完成的工作,因为可能有更好的方法在文档中存储持久数据。