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

如何在jQuery选择器中进行真正的模式搜索?,jquery,Jquery,我有一个名为:taskscription-,taskscription-1,taskscription-2,。。。 除了第一个,我想匹配所有的 $('#details form[name=aform]').find('select[name^=taskDESCRIPTION-] :selected,input:text').each(function () { //my validation } 更新:当前无法在jQuery选择器中进行真正的模式搜索。如果要排除dom中出现的第一个模式

我有一个名为:taskscription-,taskscription-1,taskscription-2,。。。 除了第一个,我想匹配所有的

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

  //my validation

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

如果要排除dom中出现的第一个模式,可以使用基于零的选择器:

如果要排除第一个含义,而不是
1
,则可以使用选择器:

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

      //my validation

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

据我所知,你不能做正确的模式匹配。在某个时刻,您将不得不过滤掉这组元素

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

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

      //my validation

}
$(...).find('select[name^=taskDESCRIPTION-]:gt(0) ...');
如果它们的顺序不是很好,那么您必须使用来检查
name
属性是否包含一个数字:

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

请注意,这将忽略DOM中出现的第一个
taskscription-
,它可能不是名为
taskscription-
@shaun5的文件检查我的更新编辑,这是您的意思吗?如果没有,你能进一步澄清吗?@Blazemonger Good shout也添加了一个替代方案。使用
:not
是一个有效的解决方案。谢谢我想我无法进行真正的模式搜索的原因是目前还不可能……嗯,一个更干净的方法是向所有应该验证的输入中添加一个类,然后用
$('#details form[name=aform]')。find('.needsValidation')