我有以下输入元素:
<input id="AAA_RandomString_BBB" type="text" />
<input id="AAA_RandomString_BBB_Start" type="text" />
<input id="AAA_RandomString_BBB_End" type="text" />
AAA&amp; BBB是常数,我将永远知道它们是什么。但是RandomString总是随机的。
我想获得AAA_RandomString_BBB的值。我不希望输入元素的值以_Start或_End。
结尾我尝试了下面的内容:
$('[id^="AAA_"]')
但是上面选择了所有ID为“AAA _”
的输入元素我需要一些方法来选择使用正则表达式类型语法,如:
$('[id^="AAA_(.+?)_BBB"]')
这可能吗?如果没有,任何人都可以提出一种选择方法
答案 0 :(得分:121)
您可以在multiple attribute selector中合并两个选择器。
$("[id^=AAA_][id$=_BBB]")
它将返回与所有指定属性过滤器匹配的所有元素:
[id^=AAA_]
匹配以id
开头的AAA_
属性的元素,[id$=_BBB]
匹配id
属性以_BBB
结尾的元素。另一种通用替代方案:
答案 1 :(得分:14)
答案 2 :(得分:7)
答案 3 :(得分:7)
这可以这样做:
$('input').filter(function(){ return this.id.match(/^AAA_.+_BBB$/) })
您可以使用$('input', <context>)
来使搜索更精确。
另请参阅here
答案 4 :(得分:1)
我用类别选择器来解决这个问题,这些选择器不需要是唯一的。
这对速度也有积极影响,因为不需要复杂的搜索 此外,您可以将其用于不同元素的不同样式
e.g。
<elem id="1" class="aa">element type aa</elem>
<elem id="2" class="aa">element type aa</elem>
<elem id="3" class="aa bb">element type aa and bb</elem>
<elem id="4" class="bb">element type bb</elem>
现在您可以简单地使用类选择器
$('.aa').click(function(){
console.log( 'clicked type aa #' + $(this).attr('id') );
});
$('.bb').click(function(){
console.log( 'clicked type bb #' + $(this).attr('id') );
});
答案 5 :(得分:0)
最好只检查_BBB上以
结尾的id $("[id$=_BBB]")
答案 6 :(得分:0)
这个怎么样:
<!DOCTYPE html>
<html>
<head>
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
</head>
<body>
<input id="AAA_RandomString_BBB" type="text" />
<input id="AAA_RandomString_BBB_Start" type="text" />
<input id="AAA_RandomString_BBB_End" type="text" />
<script>
$(document).ready(function () {
debugger
var targetElement = $('input')
.filter(function () {
var el = this.id.match(/^AAA.*BBB$/g);
return el;
});
console.log(targetElement.val());
})
</script>
</body>
</html>