我有多个<select>
名为:taskDESCRIPTION-,taskDESCRIPTION-1,taskDESCRIPTION-2,...
我想匹配除了第一个之外的所有东西?
$('#details form[name=aform]').find('select[name^=taskDESCRIPTION-] :selected,input:text').each(function () {
//my validation
}
更新:目前在jQuery选择器中无法进行真正的模式搜索。
答案 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"));
});