jQuery:如何返回已经.data(“tag”,“tagged”)的所有元素?

时间:2009-11-03 00:51:45

标签: jquery

$('*').data('tag', "tagged"); 

$('li[tag=tagged]').length返回零...

4 个答案:

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