如果我有一个未知数量的标识符共享一个特定的命名方案,有没有办法使用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(){}
答案 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(){
});
答案 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)
答案 7 :(得分:-2)
我们可以这样做:
$(document).ready(function () {
$('[id*=btnOk]').live("click", function () {
});
});
答案 8 :(得分:-2)
这是id通配符问题的唯一正确答案。
$('[id*="Wild card in double quotes"]')
这将获得“双引号中的外卡。还有更多!!!”,还有“在Wild中使用更多BS。双引号中的外卡”。
您应该使用与'[]'标签不同的引号。