使用jquery的唯一属性值

使用jquery的唯一属性值,jquery,Jquery,是否有一种方法可以获取某个属性的所有唯一值 e、 g 我需要获取div.bob上数据xyz属性的所有不同值 所以它应该归还鱼、狗和猫 var array = $('div.bob').map(function() { return $(this).data('xyz'); }); 这将返回所有值。然后您可以通过一个独特的函数来运行它 函数ArrNoDupe(a){ var temp={}; 对于(变量i=0;i

是否有一种方法可以获取某个属性的所有唯一值

e、 g


我需要获取div.bob上数据xyz属性的所有不同值

所以它应该归还鱼、狗和猫

var array = $('div.bob').map(function() { return $(this).data('xyz'); });
这将返回所有值。然后您可以通过一个独特的函数来运行它

函数ArrNoDupe(a){
var temp={};
对于(变量i=0;i
跟踪已处理的值:

var seen = {};

var values = $('div.bob').map(function() {
    var value = this.getAttribute('data-xyz');
    // or $(this).attr('data-xyz');
    // or $(this).data('xyz');

    if(seen.hasOwnProperty(value)) return null;

    seen[value] = true;
    return value;
}).get();
参考资料:

当然,这只适用于基本值。如果要映射到对象,则必须重写对象的
toString()
方法,以便将它们用作键

或作为插件:

(function($) {

    $.fn.map_unique = function(callback) {
        var seen = {};
        function cb() {
            var value = callback.apply(this, arguments);
            if(value === null || seen.hasOwnProperty(value)) {
                return null;
            }
            seen[value] = true;
            return value;
        }
        return this.map(cb);
    });

}(jQuery));

小代码:创建一个对象并生成“dog”“fish”“cat”属性。这将使它们独一无二。然后从对象中获取唯一的属性名称。简单易用:

var items = {};
$('div.bob').each(function() {
    items[$(this).attr('data-xyz')] = true; 
});

var result = new Array();
for(var i in items)
{
    result.push(i);
}
alert(result);

(function($) {

    $.fn.map_unique = function(callback) {
        var seen = {};
        function cb() {
            var value = callback.apply(this, arguments);
            if(value === null || seen.hasOwnProperty(value)) {
                return null;
            }
            seen[value] = true;
            return value;
        }
        return this.map(cb);
    });

}(jQuery));
var items = {};
$('div.bob').each(function() {
    items[$(this).attr('data-xyz')] = true; 
});

var result = new Array();
for(var i in items)
{
    result.push(i);
}
alert(result);