如何使用jQuery获取所有ID?

时间:2009-05-05 22:55:54

标签: javascript jquery

我正在尝试收集扇区中的ID列表(数组)

<div id="mydiv">
 <span id='span1'>
 <span id='span2'>
</div>

$("#mydiv").find("span"); 

给了我一个jQuery对象,但不是真正的数组;

我能做到

var array = jQuery.makeArray($("#mydiv").find("span"));

然后使用for循环将id属性放入另一个数组

或者我可以做到

$("#mydiv").find("span").each(function(){}); //but i cannot really get the id and assign it to an array that is not with in the scope?(or can I)

无论如何,我只是想知道jQuery中是否有简写这样做;

9 个答案:

答案 0 :(得分:131)

  

//但是我无法真正获取id并将其分配给不在范围内的数组?(或者我可以)

是的,你可以!

var IDs = [];
$("#mydiv").find("span").each(function(){ IDs.push(this.id); });

这是closures的美丽。

请注意,当您走在正确的轨道上时,sighohwellcletus都指出了更可靠,更简洁的方法来实现这一点,利用attribute filters(将匹配的元素限制为那些有ID)和jQuery的内置map()函数:

var IDs = $("#mydiv span[id]")         // find spans with ID attribute
  .map(function() { return this.id; }) // convert to set of IDs
  .get(); // convert to instance of Array (optional)

答案 1 :(得分:33)

.get()方法将从jQuery对象返回一个数组。此外,您可以在调用get()

之前使用.map进行投影
var idarray = $("#myDiv")
             .find("span") //Find the spans
             .map(function() { return this.id; }) //Project Ids
             .get(); //ToArray

答案 2 :(得分:12)

我的建议?

var arr = $.map($("#mydiv [id]"), function(n, i) {
  return n.id;
});

你也可以这样做:

var arr = $.map($("#mydiv span"), function(n, i) {

var arr = $.map($("#mydiv span[id]"), function(n, i) {

甚至只是:

var arr = $("#mydiv [id]").map(function() {
  return this.id;
});

基本上有很多方法。

答案 3 :(得分:7)

我能想到的最好的解决方法是创建一个自定义jquery插件来执行此操作:

jQuery.fn.getIdArray = function() {
  var ret = [];
  $('[id]', this).each(function() {
    ret.push(this.id);
  });
  return ret;
};

然后执行类似

的操作
var array = $("#mydiv").getIdArray();

答案 4 :(得分:5)

这是一个迟到的答案,但现在有一个简单的方法。当前版本的jquery允许您搜索属性是否存在。例如

$('[id]')
如果他们有id,

会给你所有元素。如果您想要所有以span开头的ID,请使用

$('span[id^="span"]')

答案 5 :(得分:3)

不是真正的数组,但objs是javascript中的所有关联数组。

我选择不使用带[]和[] .push的真实数组,因为从技术上讲,即使这样做不正确,您也可以在页面上拥有多个ID。所以只是另一个选项,以防一些HTML重复ID

$(function() {

       var oArr = {};
       $("*[id]").each(function() {
           var id = $(this).attr('id');
           if (!oArr[id]) oArr[id] = true;
       });

       for (var prop in oArr)
           alert(prop);

   });

答案 6 :(得分:1)

您可以获取特定标签的ID并将其发送给另一个元素。例如:

<:

它将获取所有输入ID并将其发送到textarea。

答案 7 :(得分:1)

HTML

busboy.on('finish' ......)

JQuery的

createjs.Shape()

答案 8 :(得分:-1)

for(i=1;i<13;i++)     
{

   alert($("#tdt"+i).val());  

}