jQuery:从多个元素中检索命名属性

时间:2016-05-16 10:09:12

标签: jquery

我有一堆元素,我希望转换为属性数组,我使用以下代码:

var attributes = [];
$("#id").find("tag").each(function() {
    attributes.push($(this).attr("attribute"));
});

有更简洁的方法吗?感觉就像我用剪刀修剪我的指甲。

我最近一直在使用d3,感觉可能有一种方法可以像var attributes = $("#id").find("tag").attr("attribute");这样的方式执行此操作,但这只是将变量设置为第一个属性选择中的元素。

3 个答案:

答案 0 :(得分:1)

您可以将.map().get()

一起使用
  

通过函数传递当前匹配集中的每个元素,生成一个包含返回值的新jQuery对象。

var attributes = $("#id tag").map(function() {
    return $(this).attr("attribute");
}).get();

答案 1 :(得分:1)

使用map()方法,如下所示。

var attributes = $("#id tag").map(function () {
    return $(this).attr("attribute");
}).get();

答案 2 :(得分:1)

使用本机方法hasAttribute。

来定位html页面中的每个元素
var attributes = [];
$("*").each(function(index,element)
{  
    if($(element)[0].hasAttribute("id"))
    {   
       attributes.push($(this).attr("id")); 
    }
});

alert(JSON.stringify(attributes)); 

定位页面中的特定元素。在html页面中添加一些元素,如p,label,h1等,并尝试跟随。您还可以在jQuery选择器中提供id或类名,如$(&#34; .className,#id,tagName&#34;)等。< / p>

var attributes = [];
$("p,h1,label").each(function(index,element)
{  
   if($(element)[0].hasAttribute("id"))
   {
      attributes.push($(this).attr("id"));
   }
});

alert(JSON.stringify(attributes));  

第三,你可以使用map mathod。 map方法将返回数组。

attributes = $("p,h1").map(function()
{
   return $(this).attr("id");
}).get();

alert(JSON.stringify(attributes));

第二&amp;第三是更好。他们将针对特定元素。