有标识符(id)的通配符select器吗?

如果我有一个未知数量的标识符共享一个特定的命名scheme,有没有办法使用jQuery一次抓住它们?

// These are the IDs I'd like to select #instance1 #instance2 #instance3 #instance4 // What do I need to add or how do I need to modify this jQuery selector in order to select all the IDs above? ("#instanceWILDCARD").click(function(){} 

该属性开始与select器( '^= )将适用于您的ID,如下所示:

 $("[id^=instance]").click(function() { //do stuff }); 

但是,考虑给你的元素一个普通的类,例如(我自己破解) .instance ,并使用该select器:

 $(".instance").click(function() { //do stuff }); 

如果你真的想匹配类,而不是ids,语法是多一点涉及,因为类可以有多个值。

 // handle elements like <div class="someclass1"></div> $('[class^="someclass"]').click(function() { // do stuff }); // handle elements like <div class="foo someclass1"></div> $('[class*=" someclass"]').click(function() { // do stuff }); 

我很惊讶没有人提到创build自己的筛选器(通过扩展jQuery的select器function)。 在这里,我创build了一个名为“likeClass”和“likeId”的通配符select器,它接受任何通配符string,并将查找匹配的所有元素(类似于正则expression式匹配)。

码:

 $.expr[':'].likeClass = function(match){ return $('[class*=" '+ match +'"]'); }; $.expr[':'].likeId = function(match){ return $('[id*=" '+ match +'"]'); }; 

用法示例:

现在我们假设你有多个具有类似名称的div元素,比如.content-1,.content-2,.content-n等等,你想select它们。 现在是蛋糕!

$( 'DIV:likeClass(内容 – )'); //返回所有具有相似Classname的元素:content- *

要么

$( 'DIV:likeClass(内容 – )'); //返回所有具有类似ID的元素:content- *

哦,是的,还有一件事…你也可以把它链起来。 🙂

 $('li:likeId(slider-content-)').hide().addClass('sliderBlock').first().fadeIn('fast'); 

请享用!

如果你有jQuery,不需要额外的expr或者任何东西

 jQuery('[class*="someclass"]').click(function(){ }); jQuery('[id*="someclass"]').click(function(){ }); 

如上所述: https : //stackoverflow.com/a/2220874/2845401

你为什么不直接把class = "instance"赋值给它们,并使用$('.instance')来select它们呢?

这些是ID,但是你可以做类似的事情:

 $("[id^='instance']").click(...) 

这有点贵 – 如果你可以指定a)元素的types,或者b)DOM中的一般位置,比如:

 $("#someContentDiv span[id^='instance']").click(...) 

[id^='...']select器的基本意思是“find一个以此string开头的元素,类似于id$= (ID以此string结尾)等。

你可以在这里find一个完整的jQuery文档页面列表。

使用胡萝卜。

 $("div[id^=instance]").hide(); 

jsFiddle的例子

我们可以这样做:

 $(document).ready(function () { $('[id*=btnOk]').live("click", function () { }); }); 

这是id通配符问题的唯一正确答案。

 $('[id*="Wild card in double quotes"]') 

这将得到“双引号的通配符,还有更多的!!!”,还有“双引号中的Wild BS”。

你应该使用与你的'[]'标签不同的引号。