从随机定义的属性获取值是否可取?

时间:2013-01-27 03:40:31

标签: jquery html

当我发现jquery可以从任何随机定义的属性中获取值时,我感到非常震惊。

HTML

<a postid='10' class='delete_post'>Delete</a>

JS

$('body').on('click', '.delete_post', function() {
    var id = $(this).attr('postid');
    delete_post(id); //$.post request for deleting post
});

我做了fiddle here来测试它。

我的问题是=&gt;是否建议使用这种随机定义的属性来获取价值?

通常我会使用以下代码获得价值。

HTML

<div class='delete_post'>
    <a>Delete</a>
    <input type='hidden' class='id' value='10' />
</div>

JS

$('.delete_post').on('click', 'a', function() {
    var id = $(this).parent().find('.id').val();
    delete_post(id); //$.post request for deleting post
});

(我在chrome,firefox和Internet Explorer中成功测试了这个。)

2 个答案:

答案 0 :(得分:3)

虽然这通常有效,但建议不要使用专有/用户定义的属性。这些将无法验证,您可能会错误地使用真实属性。您的代码也不具备前瞻性,因为您可以定义一个现在不使用的属性,但以后可以使用。

相反,您应该使用data-属性/ .data

<input data-postid=10 class=delete_post>

var postID = $(this).data('postid');

规格:http://www.w3.org/TR/2011/WD-html5-20110525/elements.html#embedding-custom-non-visible-data-with-the-data-attributes

答案 1 :(得分:3)

HTML5定义使用data-*属性是可以接受的。 “任意随机”可能不如data-any-random有效。