1

使用.data()函数我们可以将数据存储在 jQuery 对象中:

文档

存储与匹配元素关联的任意数据,或在命名数据存储中返回匹配元素集中第一个元素的值。

例子:

 // sets "string" value to "test"
 $(".myClass").data("test", "string");

 $(".myClass").data("test"); // returns "string"

这很简单。

现在我想从页面中获取所有"string""test".

这可能吗?有没有可以做到这一点的功能?

4

3 回答 3

3

您可以使用.filter()过滤元素

var $filtered = $('<target-elements>').filter(function(){
    return $(this).data('test') == 'test'
})

演示:小提琴

于 2013-08-20T07:31:55.567 回答
0

我担心.data()实际上并没有data-向您的 html 元素添加属性。一种可能的解决方法是遍历元素:

$('.myClass').each(function(){
    var el = $(this);
    if(el.data("test") === "string") {
        console.log("found !");
    }        
});

这是一个小提琴:

http://jsfiddle.net/5p9LX/1/

于 2013-08-20T07:26:10.550 回答
0

尝试使用jQuery.grep()过滤所有元素

使用“测试”数据键获取所有元素:

var arrElements = $.grep($("*"), function (a) { return $(a).data("test") != undefined; });
var $filteredElements = $(arrElements);

获取所有“test”数据值等于“string”的元素:

var arrElements = $.grep($("*"), function (a) { return $(a).data("test") == "string"; });
var $filteredElements = $(arrElements);
于 2013-08-20T07:32:04.110 回答