遍历具有相似ID的元素

问题描述:

我想在迭代过程中获取单个<span>元素的id遍历具有相似ID的元素

示例方案:

我有几个id S的与AAA开始和结束BBB。中间字符可以改变:

<span id="AAA-LS-BBB">hi1</span> 
<span id="AAA-LAS-BBB">hi2</span> 
<span id="AAA-LBS-BBB">hi3</span> 
<span id="AAA--LCS--BBB">hi4</span> 

这里,跨度ID和跨度ID的最后3个数字的前3位是一样的...只是在中间会有所不同。我想泛化的方法知道...每个ID使用... $(“#id”)。attr(“id”) 所以,这里 我想找出像下面的迭代, 我想写一个迭代器方法来获得当前编号

$("span[id^='AAA-***-BBB']").each(function(){ 
    var a = $("this").attr("id"); 
}); 

希望我的要求很明确。 如何在这里使用正则表达式来找出id?

+0

打印意味着什么?怎么样?哪里? – EmCo 2011-04-05 04:37:39

+0

呃,我不得不说。无论是使用[jsfiddle.net](jsfiddle.net)还是使用至少一些HTML和更清晰的描述来更新你的帖子,你想要达到的目标。 – Khez 2011-04-05 04:38:47

使用.filter()用正则表达式组合:

$('span[id]').filter(function() { 
    return /^AAA.*BBB$/.test(this.id); 
}).each(function() { 
    alert(this.id); 
}); 

或者,因为你使用的是.each()已经,你可以简单地添加在它里面的if条件:

$('span[id]').each(function() { 
    if (/^AAA.*BBB$/.test(this.id)) { 
     alert(this.id); 
    } 
}); 

更新:看起来你也可以在同一个属性的结合既Attribute-Starts-WithAttribute-Ends-With选择:

$('div[id^="AAA"][id$="BBB"]').each(function() { 
    alert(this.id); 
}); 

(例:http://jsfiddle.net/2pz8X/

+0

两种方式的好回答+1 – diEcho 2011-04-05 04:55:32

+0

+1赞同良好。 – alex 2011-04-05 05:00:20

+0

非常感谢..很好 – 2011-04-05 06:21:59

试试这个:

$("span[id^='AAA']").each(function(){ 
    alert($(this).id); 
}); 
+0

这不起作用。 $(this)未定义。你需要使用'this.id'来代替。 – 2014-09-11 12:38:36

结合的同胞捐助者的建议,并作出正则表达式更具体:

 
// first, at least get all <div>'s with id's that start with 'AAA' 
$("div[id^='AAA']").filter(function(){ 
    var regexp = /^A{3}(.*)B{3}$/; // regex 
    return (this.id.match(regexp)); 
}); 

这将返回您需要的所有div的目标。

Sample @http://jsfiddle.net/4ZNWJ/