JQuery选择器上的部分匹配

时间:2012-04-20 20:12:42

标签: jquery

要获取以“ELEC ...”开头的所有<td>元素文本,我正在做 -

$('td.id').each(function(){
    if ($(this).text().indexOf('ELEC') == 0) {}
});

是否有更简单的方法可以执行此操作,例如$('td.id:contains("ELEC*")')

3 个答案:

答案 0 :(得分:5)

要仅获取以ELEC开头的元素,请使用.filter方法。

$("td.id").filter(function(){
    return /^ELEC/.test($(this).text());
});

或略高效

var $collection = $("td.id");
$collection.filter(function(i){
    return /^ELEC/.test($collection.eq(i).text());
});

答案 1 :(得分:4)

看起来这就是你如何做到的(我删除了通配符星号,因为它不需要。):

$('td.id:contains("ELEC")')

http://api.jquery.com/contains-selector/

答案 2 :(得分:0)

似乎如果我们将几个不同提案中的最佳提案结合起来,我们会得到更快的东西,因为这里并没有真正需要正则表达式:

$("td.id").filter(function() {
    return ($(this).text().substr(0, 4) == "Elec");
}).whateverMethodYouWant();

或者更快一点,使用更少的jQuery:

$("td.id").filter(function() {
    return ((this.textContent || this.innerText).substr(0, 4) == "Elec");
}).whateverMethodYouWant();