我正在使用jQuery 1.4.3。如何实现微数据属性 - data- *和摆脱ID属性?
我想确定使用数据属性的最佳做法。在最近的过去,我创建了复选框这样的:
<input type='checkbox' id='123' class='Product' comp='1' man='1'>
<input type='checkbox' id='456' class='Product' comp='1' man='2'>
<input type='checkbox' id='789' class='Product' comp='2' man='3'>
的HTML 5规范说我不应该使用自定义属性,我应该用数据 - *属性。这意味着,上述复选框真的应该是这样的:
<input type='checkbox' id='123' class='Product' data-comp='1' data-man='1'>
<input type='checkbox' id='456' class='Product' data-comp='1' data-man='2'>
<input type='checkbox' id='789' class='Product' data-comp='2' data-man='3'>
这是很容易做到,但使用jQuery,我通常会用自己的ID,在这种情况下,恰好是实际的产品ID调用这些元素。所以,我的代码来访问这些会是这样的:
$(".Product").click(function() {
var ProductID = $(this).attr("id");
alert(ProductID);
});
由于ID实际上只是一块,我需要访问数据的,它应该是一个数据 - *属性的ID代替。我想我真正应该做的是这样的:
<input type='checkbox' class='Product' data-prodid='123' data-comp='1' data-man='1'>
<input type='checkbox' class='Product' data-prodid='456' data-comp='1' data-man='2'>
<input type='checkbox' class='Product' data-prodid='789' data-comp='2' data-man='3'>
这意味着该ID是没有用于存储数据存在的必要,因为我可以这样做:
$(".Product").click(function() {
var ProductID = $(this).attr("data-prodid");
alert(ProductID);
});
如果我想查或取消选中的盒子一组特定的,我可以做这样的事情:
// WHEN A PRODUCT IS CLICKED
$(".Product").click(function() {
// GET THE COMP
var Comp = $(this).attr("data-comp");
// UNCHECK BOXES WITH A DISSIMILAR COMP THAN THE ONE CLICKED
$("[data-comp]!="+Comp).attr("checked", false);
});
这真的好像我能做到的一切,我需要在不使用id来存储数据。我错了吗?这是我应该如何实施微数据存储?是否正确,我不再需要id属性,除了CSS布局?我错过了什么?
我有点困惑,但根据w3c规范,任何自定义属性都应该以单词'data-'作为前缀,并且在像文本框id这样的输入元素中,名称和类属性应该正常使用,而不需要数据,我认为这些不被视为自定义属性。除了这些像“comp”这样的自定义属性,它应该与前缀“data-”一起使用。 div或span也可以具有id和class属性。如我错了请纠正我! – 2012-02-08 16:50:27