如何使用jQuery获取特定div中锚点的所有id并将它们转换为数组以传递load / get方法?
HTML将采用以下格式:
<div id="a div id">
<div style="some styling">
<span><a href="" id="the_id_1"/></span>
<span><a href="" id="the_id_2"/></span>
<span><a href="" id="the_id_3"/></span>
</div>
</div>
所以理论上我是在将锚点的id传递给一个加载方法之后,所以我可以根据所选的id刷新div的内容。
编辑#1
id与我上面提到的略有不同。
这是我用来从锚点获取id号的函数:
function getSelectedTierPanels(tierId) {
var container = $('#tier'+tierId+' a').map(function() {
return this.id.match(/\d+$/);
}).get();
alert(container);
return container;
}
答案 0 :(得分:3)
与TJ's answer类似,但使用map()函数创建一个包含所有ID的新jQuery对象,然后get()从对象获取正常数组:
var anchors = $('#a_div_id a').map(function () { return this.id; }).get();
<小时/> 要以
the_id_1
,the_id_2
格式获取id中的数字,您可以使用我最喜欢的技术之一 - 分割和弹出:
var anchors = $('#a_div_id a').map(function () {
return this.id.split("_").pop();
}).get();
此技术将字符串拆分为每个_
的数组。 pop()方法删除并返回数组的最后一项,这只是这种情况下的数字。如果您想要数组的不同部分,可以直接引用该项的索引。
id
略有不同,那么正则表达式可能比分割更好。您当前拥有的是return this.id.match(/\d+$/);
,除了 match()返回一个数组,因此您需要访问该数组的第一个元素以检索完整匹配时,这很好:
return this.id.match(/\d+$/)[0];
请注意,如果没有成功匹配,这会抛出错误,因此您最好将匹配存储到变量中:
var match = this.id.match(/\d+$/);
return match ? match[0] : null;
答案 1 :(得分:3)
function get_all_idz() {
var array_idz = new Array();
var total = $(".row_id").length;
for(a=0; a<=total-1; a++)
{
var abc = $(".row_id").eq(a).attr('id');
array_idz[a] = abc;
}
alert(array_idz);
}
/*IT WILL STORE IN ARRAY LIKE (10,11,12,13,14,15)*/
答案 2 :(得分:2)
这样的事情应该有效:
var anchors = [];
$('#a_div_id a').each(function() {
// `this` is the actual `a` element
if (a.id) {
anchors.push(a.id);
}
});
选择器“#a_div_id a”(注意我已经更改了ID以使其工作; ID中没有允许的空格用于选择器)查找作为元素后代的所有a
元素ID为“a_div_id”。 jQuery的each
遍历它们,每次调用迭代器函数设置this
到实际的a
元素(不是它的jQuery对象)。在a
元素实例中,您可以查询id
属性,该属性反映了id
属性。