是否有标识符(id)的通配符选择器?

时间:2010-09-13 02:20:13

标签: jquery jquery-selectors wildcard

如果我有一个未知数量的标识符共享一个特定的命名方案,有没有办法使用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(){}

9 个答案:

答案 0 :(得分:167)

attribute starts-with selector ('^=)适用于您的ID,如下所示:

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

但是,考虑给你的元素一个公共类,例如(我自己搞砸了).instance,然后使用那个选择器:

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

答案 1 :(得分:84)

如果你真的想匹配类而不是id,那么语法会更复杂,因为class可以有多个值。

// 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
});

答案 2 :(得分:11)

我很惊讶没有人提到创建自己的过滤器选择器(通过扩展jQuery的Selector功能)。在这里,我创建了一个名为“likeClass”和“likeId”的通配符选择器,它接受任何通配符字符串并找到所有匹配的元素(类似于正则表达式匹配)。

<强>代码:

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

使用示例:

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

  

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

  

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

噢,是的,还有一件事......你也可以把它链起来。 :)

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

享受!

答案 3 :(得分:10)

如果你有jQuery

,则无需额外的expr或任何花哨的东西
jQuery('[class*="someclass"]').click(function(){
});

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

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

答案 4 :(得分:3)

为什么不直接为所有人分配class = "instance"并使用$('.instance')选择他们?

答案 5 :(得分:3)

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

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

虽然这有点贵 - 如果您可以指定a)元素的类型或b)DOM中的一般位置,它会有所帮助,例如:

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

[id^='...']选择器基本上意味着“找到一个ID以此字符串开头的元素,类似于id$=(ID以此字符串结尾)等等。

您可以在jQuery文档页面here上找到完整的列表。

答案 6 :(得分:2)

使用胡萝卜。

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

jsFiddle example

答案 7 :(得分:-2)

我们可以这样做:

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

    });
});

答案 8 :(得分:-2)

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

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

这将获得“双引号中的外卡。还有更多!!!”,还有“在Wild中使用更多BS。双引号中的外卡”。

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