我正在尝试收集扇区中的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中是否有简写这样做;
答案 0 :(得分:131)
//但是我无法真正获取id并将其分配给不在范围内的数组?(或者我可以)
是的,你可以!
var IDs = [];
$("#mydiv").find("span").each(function(){ IDs.push(this.id); });
这是closures的美丽。
请注意,当您走在正确的轨道上时,sighohwell和cletus都指出了更可靠,更简洁的方法来实现这一点,利用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());
}