迭代具有相似ID的元素

pra*_* cs 2 javascript jquery

我希望在迭代期间获得id单个<span>元素.

示例场景:

我有一些id开始AAA和结束的s 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>
Run Code Online (Sandbox Code Playgroud)

这里,span id的前3位数字和span id的后3位数字相同...只在中间它会有所不同.我想通用方法知道...每个id使用... $("#id").attr("id")所以,这里我试图找出迭代如下,我想写一个迭代器方法获取当前的ID

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

希望我的要求很清楚.怎么ti在这里使用正则表达式...找出id?

Dav*_*ang 9

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

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

或者,既然你已经使用了.each(),你只需在if里面添加一个条件:

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

更新:看起来您也可以在同一属性上将Attribute-Starts-WithAttribute-Ends-With选择器组合在一起:

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

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