ChatGPT解决这个技术问题 Extra ChatGPT

jQuery 选择器中的通配符

我正在尝试使用通配符来获取 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 可以使用浏览器功能(尽管对现代浏览器应该没有太大区别)。
此外,需要注意的重要一点是 $("[id*=jander]") 将选择 ID 包含字符串 jander 的所有元素。

n
nico

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

$("[id^=jander]")

得到那些以“jander”结尾的

$("[id$=jander]")

另请参阅 JQuery documentation


文档给出了这个例子:$('input[name^="news"]').val('news here!')
A
Al Foиce ѫ

由于标题建议使用通配符,您也可以使用它:

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

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


A
Ajay2707

尝试使用 jQuery 开头

选择器,'^=',例如

[id^="jander"]

我不得不问,你为什么不想使用类来做到这一点?


感谢您的课程提示,这将我带到了正确的方向!
j
joshuahedlund

对于您可以使用的课程:

div[class^="jander"]

A
Ajay2707

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

$('[id^=pick_]').click( function(event) { // 在这里对 id 做一些事情: alert('Picked: '+ event.target.id.slice(5)); } ) ;

moo1
< div id="pick_2">moo2
moo3


S
Simon M

当你有一个更复杂的 id 字符串时,双引号是强制性的。

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

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