如何使用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()); }