如何使用jQuery获取所有ID?
我正在试图收集一个部门的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中是否有这样的简写;
//但是我不能真正得到id并将它分配给一个不在范围内的数组?(或者我可以)
是的你可以!
 var IDs = []; $("#mydiv").find("span").each(function(){ IDs.push(this.id); }); 
这是closures的美丽。
 请注意,当你在正确的轨道上时, sighohwell和cletus都指出了更可靠和简洁的方法来实现这一点,利用属性filter (限制匹配元素与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) 
.get()方法将从jQuery对象中返回一个数组。 另外,您可以在调用get()之前使用.map来投影到某个东西
 var idarray = $("#myDiv") .find("span") //Find the spans .map(function() { return this.id; }) //Project Ids .get(); //ToArray 
我的build议?
 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; }); 
基本上有很多方法。
我能想到回答这个问题的最好方法是制作一个自定义的jquery插件来完成这个工作:
 jQuery.fn.getIdArray = function() { var ret = []; $('[id]', this).each(function() { ret.push(this.id); }); return ret; }; 
然后做一些像
 var array = $("#mydiv").getIdArray(); 
这是一个迟到的答案,但现在有一个简单的方法。 jquery的当前版本让你search是否存在属性。 例如
 $('[id]') 
 会给你所有的元素,如果他们有身份证。 如果你想要所有跨度与span开始你可以使用 
 $('span[id^="span"]') 
不是一个真正的数组,但objs是在JavaScript中的所有关联数组。
我select不使用[]和[] .push的真实数组,因为从技术上讲,即使这样做不正确,也可以在页面上拥有多个ID。 所以只是另一种select,以防一些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); }); 
您可以获取特定标签的ID并将其发送给其他元素。 举个例子:
 $("input").map(function() { $( "textarea" ).append(this.id+"\n"); }); 
它将获得所有inputID并将其发送到textarea。
HTML
 <div id="mydiv"> <span id='span1'> <span id='span2'> </div> 
JQuery的
 var IDs = []; $("#mydiv").find("span").each(function(){ IDs.push($(this).attr("id")); }); 
 for(i=1;i<13;i++) { alert($("#tdt"+i).val()); }