使用自定义属性有效吗?

时间:2011-11-22 11:18:46

标签: jquery html

我想取消任何链接并为每个链接添加额外的属性。以下是我如何实现这一目标。

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');
    });
}

我的问题是,这是一种有效/推荐的添加自定义属性的方法吗?

3 个答案:

答案 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);