使用正则表达式我有HTML页面上的几个元素,我叫他们通过JavaScript这样的:jQuery的元素选择
$('#element_1_value')
$('#element_2_value')
$('#element_3_value')
$('#element_4_value')
$('#element_5_value')
.....
现在我要为所有的元素一个单一的点击事件。我如何通过正则表达式来做到这一点。
使用正则表达式我有HTML页面上的几个元素,我叫他们通过JavaScript这样的:jQuery的元素选择
$('#element_1_value')
$('#element_2_value')
$('#element_3_value')
$('#element_4_value')
$('#element_5_value')
.....
现在我要为所有的元素一个单一的点击事件。我如何通过正则表达式来做到这一点。
这里有四种不同的方式来解决这个问题:
选项#1:你可以把他们都变成一个选择:
$("#element_1_value, #element_2_value, #element_3_value, #element_4_value, #element_5_value").click(function() {
// your code here
})
选项#2:更妙的是给所有人分配一个通用类:
<div id="element_1_value" class="valueCommon">
<div id="element_2_value" class="valueCommon">
...
然后用这个:
$(".valueCommon").click(function() {
// your code here
})
选项#3:它也可以写什么ID的开始和一个给定的字符串结尾选择,但我不会推荐,因为它需要的选择器引擎在检查每一个对象有一个id属性,是不是做事情的最快方法页:
$("[id^='element_']").filter("[id$='_value']").click(function() {
// your code here
})
第4个选项:我不知道对正则表达式的任何内置的jQuery支持中选择匹配。你可以使用一个过滤器函数,任何javascript可以检查和对象决定它是否匹配,但唯一的方法使用正则表达式将需要创建一个jQuery对象的页面中的所有对象与id然后运行每个过滤器。这可以起作用,但肯定不是最有效的做事方式。使用通用类允许浏览器比正则表达式过滤器优化您的查询。
甲正则表达式匹配是这样的:
$("[id]").filter(function() {
return(this.id.match(/element_\d+_value/) != null);
});
这产生在包含了id属性的页面的所有对象的jQuery对象和然后比较每一个以正则表达式,除去没有按”的任何元素t匹配。正如我前面所说,我不会因性能原因而推荐这种方法。
有很多因素,不仅5 – 2012-01-10 06:55:10
在这种情况下,只是将类分配给所有的人,并使用'喜欢在回答中提到.'选择。 – techfoobar 2012-01-10 06:57:24
类是另一种选择,,但没有任何办法使用正则表达式 – 2012-01-10 06:59:57
你为什么不使用类,而不是ID? 例如:以上所有元素都有 “your_class_name” 类,和你有什么要的是:
$(".yourclass_name").click(function() {
// do it your-self
});
类是另一种选择,,但没有任何办法使用正则表达式 – 2012-01-10 06:59:34
使用本机类和ID获得更好的性能 – 2012-01-10 07:02:20
您可以使用启动与选择:
$('div[id^="element_"]').each(function()
{
alert("clicked!");
});
它不仅与element_开始,而且必须与_value – 2012-01-10 06:58:36
结束时,我会与别人同意你”重新使用课程可能会更好。我可以看到使用正则表达式的唯一方法是遍历每个元素,这显然不是一个好的解决方案 – dearlbry 2012-01-10 07:03:26
你应该为所有这些元素使用一个类 – 2012-01-10 06:58:20
这可能是以下的一个副本: http:// stackoverflow。COM /问题/ 190253/jQuery的选择正则表达式 – 2012-01-10 06:58:23