你如何在jQuery选择器中进行真正的模式搜索?

时间:2013-04-05 14:20:57

标签: jquery

我有多个<select>名为:taskDESCRIPTION-,taskDESCRIPTION-1,taskDESCRIPTION-2,... 我想匹配除了第一个之外的所有东西?

$('#details form[name=aform]').find('select[name^=taskDESCRIPTION-] :selected,input:text').each(function () {

  //my validation

}

更新:目前在jQuery选择器中无法进行真正的模式搜索。

2 个答案:

答案 0 :(得分:2)

如果您想要排除dom中出现的第一个,您可以使用<{3}}选择器

$('#details form[name=aform]').find('select[name^=taskDESCRIPTION-]:gt(0):selected,input:text').each(function () {

      //my validation

}

如果您想要排除第一个含义,您想要的是 1,您可以使用gt选择器:

$('#details form[name=aform]').find('select[name^=taskDESCRIPTION-]:not(select[name=taskDESCRIPTION-1]):selected,input:text').each(function () {

      //my validation

}

答案 1 :(得分:1)

据我所知,您无法进行正确的模式匹配。在某些时候,你将不得不过滤掉那组元素。

如果它们在DOM中以该顺序出现,那么您可以使用:gt选择器忽略第一个匹配元素:

$(...).find('select[name^=taskDESCRIPTION-]:gt(0) ...');

如果排序不是很好,那么您必须使用.filter()检查name属性是否包含数字:

$(...).find('select[name^="taskDESCRIPTION-"]').filter(function(i, element) {
    return /taskDESCRIPTION-\d+/.test(element.getAttribute("name"));
});