有标识符(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”。
你应该使用与你的'[]'标签不同的引号。