我正在尝试使用通配符来获取所有ID以“ jander”开头的元素的ID。我尝试过$('#jander*')$('#jander%'),但是它不起作用。.

我知道我可以使用元素的类来解决它,但是也可以使用通配符??

<script type="text/javascript">

  var prueba = [];

  $('#jander').each(function () {
    prueba.push($(this).attr('id'));
  });

  alert(prueba);


});

</script>

<div id="jander1"></div>
<div id="jander2"></div>


评论

这是关于jQuery(或更确切地说是Sizzle引擎)的问题。

只需注意:使用jQuery或Sizzle可以利用浏览器功能的类,这样做会更快(尽管对于现代浏览器来说应该没有太大的区别)。

JQuery选择器正则表达式的可能重复项

另外,需要注意的重要一点是$(“ [id * = jander]”)将选择ID包含字符串jander的所有元素。

#1 楼

要获取所有以“ jander”开头的元素,您应该使用:

$("[id^=jander]")


要获取以“ jander”结尾的元素

$("[id$=jander]")


另请参见JQuery文档

评论


文档给出了以下示例:$('input [name ^ =“ news”]')。val('news here!')

–布伦登
2011-10-17 9:55

该代码按预期工作。无需使用双引号,这只会增加错过右引号的机会,并使可读性降低。

–nico
2012年7月8日在17:49

@nico有趣的是,文档说它可以与属性一起使用,而id从技术上来说是一个属性,但是我猜想是jquery的最新版本(即1.9)以及如何处理属性和属性的最新更改,这一行略相对于两者模糊不清,因此您可以将属性选择器用于(至少某些)属性。

– johntrepreneur
13年5月10日在21:14

如果我要选择所选的偶数,该怎么办。例如:如果我想做同样的事情,我目前拥有.col-lg-4:even div:nth-​​child(1)...我会写什么? “ [class ^ =。col-lg-]:偶”? (我似乎没有使它起作用)

–路易斯·罗伯斯(Luis Robles)
13年11月12日23:34

某些行为使我感到惊讶-如果我将其与“ class $ = ...”一起使用,它将搜索项目的类别列表,而不是各个类别的名称。因此,只有在搜索的类别是该项目的最后一个类别时,它才会命中。除了Chrome以外,没有测试过。而且不确定缺陷是在jQuery中还是在我对jQuery的期望中。

–罗杰·克鲁格(Roger Krueger)
16年8月7日在20:45

#2 楼

由于标题建议使用通配符,因此您也可以使用以下命令:




 $(document).ready(function(){
  console.log($('[id*=ander]'));
}); 

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="jander1"></div>
<div id="jander2"></div> 





这将在id中的任意位置选择给定的字符串。

#3 楼

尝试jQuery开头-使用


选择器'^ =',例如


[id^="jander"]


我必须问一下,为什么不想使用类呢?

评论


为了添加上下文,我正在寻找相同的解决方案,因为我使用的是Django,其Django的ModelForm类根据模型指示ID,并且似乎不允许进行此类分组。即HTML不在我的控制范围内。

–克里斯蒂安·曼(Christian Mann)
2012年6月12日在16:07

当使用ASP.Net WebForms,尤其是单选和复选框列表时,这很有用。

– DavidScherer
19年5月14日在21:36

#4 楼

对于您可以使用的类:

div[class^="jander"]


评论


我无法使它工作,收到有关无效语法的消息。

– stian
13年2月28日在8:59

#5 楼

要从通配符匹配中获取ID:




 $('[id^=pick_]').click(
  function(event) {

    // Do something with the id # here: 
    alert('Picked: '+ event.target.id.slice(5));

  }
); 

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="pick_1">moo1</div>
<div id="pick_2">moo2</div>
<div id="pick_3">moo3</div> 




评论


代替“ event.target.id”,它也可能起作用:$(this).attr(“ id”)

– PJ Brunet
2014年3月24日20:58在

#6 楼

如果您具有更复杂的ID字符串,则必须使用双引号。

例如,如果您具有如下ID:id="2.2",则访问它的正确方法是:$('input[id="2.2"]')

出于安全原因,请尽可能使用双引号。