我想取消任何链接并为每个链接添加额外的属性。以下是我如何实现这一目标。
function anularEnlaces(){
$('nav a').each(function(){
var href = $(this).attr('href');
var id = $(this).attr('id');
$(this).attr('href','javascript:void(0)');
$(this).attr('hrefnot',href);
$(this).attr('nivel','uno');
$(this).attr('seccion','dos');
});
}
我的问题是,这是一种有效/推荐的添加自定义属性的方法吗?
答案 0 :(得分:7)
不是那样的。如果您使用的是HTML5 doctype,则可以使用新的data-*
属性,然后使用jQuery data
方法:
$(this).data("hrefnot", href);
和HTML:
<a href="somewhere.html" data-hrefnot="something">A link</a>
如果您最初不需要在标签上存储数据,那么无论您是否使用HTML5文档类型都无关紧要(jQuery的data
方法仍然有效。)
答案 1 :(得分:3)
如果您使用HTML5,则有效,您可以添加自己的自定义数据属性data-
:
HTML5 Custom Data Attributes (data-*)
你可以使用jQuery的$.data
来阅读和修改它们。
答案 2 :(得分:2)
不,您应该使用data()代替自定义元素属性,而attr()(或更好的prop())代表标准html属性。
data()用法示例:
<a hred="some/url" data-custom="value">test</a>
// getter
var customValue = $('a').data('custom');
var customUndefined = $('a').data('testing');
现在customValue包含“value”字符串,而customUndefined包含undefined
// setter
$('a').data('custom', 'test');
$('a').data('testing', true);