1

我有多个<select>命名:taskDESCRIPTION-,taskDESCRIPTION-1,taskDESCRIPTION-2,... 我想匹配除第一个之外的所有内容吗?

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

  //my validation

}

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

4

2 回答 2

1

您可以使用选择器,如果您想排除出现在 dom 中gt的第一个,它是从零开始的

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

      //my validation

}

如果你想排除第一个意思,你想要那个不是 1,你可以使用:not选择器:

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

      //my validation

}
于 2013-04-05T14:22:56.363 回答
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"));
});
于 2013-04-05T14:25:34.457 回答