$('*').data('tag', "tagged");
$('li[tag=tagged]').length
返回零...
答案 0 :(得分:3)
$('*').data('tag', "tagged");
$('li').each(
function()
{
if( $(this).data('tag') === "tagged" )
{
//do something taggy ...like increment a count
}
}
);
或者,对于可重复使用的东西:
function getTaggedInJquery( jQueryObj )
{
var total = 0;
jQueryObj.each(
function()
{
if( $(this).data('tag') === "tagged" )
total++;
}
);
return total;
}
alert( getTaggedInJquery( $('li') ) );
答案 1 :(得分:2)
AFAIK data(..)
方法并没有真正设置/附加/创建您使用它的元素上的任何内容。
它使用内部字典对象来保存值,并通过唯一生成的id匹配它们。
凯文·佩诺提出的解决方案有效但如果你没有明智地选择你的选择器,可以非常快速地非常。
检查第1271行的http://jqueryjs.googlecode.com/files/jquery-1.3.2.js ++ -
答案 2 :(得分:0)
您正在使用的选择器匹配HTML元素上的属性,而不是jQuery data
项。
AFAIK,jQuery没有匹配data
项的内置选择器。
您可以编写自己的选择器,也可以在元素本身上设置自己的属性。
答案 3 :(得分:0)
var taggedElements = $.grep($('li').get(), function(n, i){
return ($(n).data('tag') == 'tagged');
});