Roy*_*han 62 javascript jquery
我试图收集一个扇区中的ID列表(数组)
<div id="mydiv">
<span id='span1'>
<span id='span2'>
</div>
$("#mydiv").find("span");
Run Code Online (Sandbox Code Playgroud)
给了我一个jQuery对象,但不是一个真正的数组;
我可以
var array = jQuery.makeArray($("#mydiv").find("span"));
Run Code Online (Sandbox Code Playgroud)
然后使用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)
Run Code Online (Sandbox Code Playgroud)
无论如何,我只是想知道jQuery中是否有简写这样做;
Sho*_*og9 138
//但是我无法真正获取id并将其分配给不在范围内的数组?(或者我可以)
是的你可以!
var IDs = [];
$("#mydiv").find("span").each(function(){ IDs.push(this.id); });
Run Code Online (Sandbox Code Playgroud)
这就是封闭之美.
请注意,当你走在正确的轨道上时,sighohwell和cletus都指出了更可靠和简洁的方法来实现这一点,利用属性过滤器(将匹配的元素限制为具有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)
Run Code Online (Sandbox Code Playgroud)
Joh*_*ter 33
.get()方法将从jQuery对象返回一个数组.此外,您可以在调用get()之前使用.map进行投影.
var idarray = $("#myDiv")
.find("span") //Find the spans
.map(function() { return this.id; }) //Project Ids
.get(); //ToArray
Run Code Online (Sandbox Code Playgroud)
cle*_*tus 12
我的建议?
var arr = $.map($("#mydiv [id]"), function(n, i) {
return n.id;
});
Run Code Online (Sandbox Code Playgroud)
你也可以这样做:
var arr = $.map($("#mydiv span"), function(n, i) {
Run Code Online (Sandbox Code Playgroud)
要么
var arr = $.map($("#mydiv span[id]"), function(n, i) {
Run Code Online (Sandbox Code Playgroud)
甚至只是:
var arr = $("#mydiv [id]").map(function() {
return this.id;
});
Run Code Online (Sandbox Code Playgroud)
基本上有很多方法.
我能想到的最好的解决方法是创建一个自定义jquery插件来执行此操作:
jQuery.fn.getIdArray = function() {
var ret = [];
$('[id]', this).each(function() {
ret.push(this.id);
});
return ret;
};
Run Code Online (Sandbox Code Playgroud)
然后做类似的事情
var array = $("#mydiv").getIdArray();
Run Code Online (Sandbox Code Playgroud)
这是一个迟到的答案,但现在有一个简单的方法.当前版本的jquery允许您搜索属性是否存在.例如
$('[id]')
Run Code Online (Sandbox Code Playgroud)
如果他们有id,会给你所有的元素.如果您希望所有以id开头的跨度span都可以使用
$('span[id^="span"]')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
108833 次 |
| 最近记录: |