Javascript Jquery—使用多个选择器或每个选择器更有效
我有类似的东西Javascript Jquery—使用多个选择器或每个选择器更有效,javascript,jquery,html,internet-explorer-8,performance,Javascript,Jquery,Html,Internet Explorer 8,Performance,我有类似的东西 <input class = "Class1"/> <input class = "Class2"/> <input class = "Class3"/> <input class = "Class4"/> ... .. . $(".Class1").someFunction("data1"); $(".Class2").someFunction("data2"); $(".Class3").someFunction("data3
<input class = "Class1"/>
<input class = "Class2"/>
<input class = "Class3"/>
<input class = "Class4"/>
...
..
.
$(".Class1").someFunction("data1");
$(".Class2").someFunction("data2");
$(".Class3").someFunction("data3");
$(".Class4").someFunction("data4");
...
..
.
...
..
.
$(“.Class1”).someFunction(“data1”);
$(“.Class2”).someFunction(“数据2”);
$(“.Class3”).someFunction(“data3”);
$(“.Class4”).someFunction(“data4”);
...
..
.
这样做是否更有效
<input something="data1"/>
<input something="data2"/>
<input something="data3"/>
<input something="data4"/>
...
..
.
$("[something]").each($(this).someFunction($(this).attr("something")));
...
..
.
$(“[某物]”).each($(this.someFunction($(this.attr(“某物”));
想法?就最快的选择器而言,最好是:
<div id="container">
<input data-something="1" />
<input data-something="2" />
<input data-something="3" />
<input data-something="4" />
</div>
无论您如何选择它们,如果您的代码示例与实际代码类似,则无论如何都需要执行
each()
。这是因为您要向每个函数调用传递唯一的数据
但您至少应该在选择器中添加一个标记名
$("input[something]").each(function() {
$(this).someFunction($(this).attr("something"));
});
如果没有标记名,jQuery将需要查看页面上的每个元素,而不仅仅是输入元素。^=
运算符匹配也以以下开头:
$("input[class^=Class]").each($(this).someFunction($(this).attr("something")));
注意到我可能会有至少20-30个这样的输入,我需要调用这个函数?好的。我想我不清楚。我需要向每个输入调用的someFunction传递不同的字符串。如何适应向函数的每个实例传递不同的值?我更新了。使用html5data-
属性。如果我给每个输入元素一个不同的类名,然后选择“按类名”,那么我可以将发送到每个输入的值硬编码到java脚本中。我不必使用每个元素,但我必须为每个输入元素使用单独的选择器。@kralco626:这取决于应用程序的最终要求。最终,我宁愿选择一个DOM而不是几个。但是,我不会使用class
属性作为数据存储机制,如果这是我想要的。如果someFunction
是一个jQuery插件,或者每个插件都不需要它。@Josiah:是的,但我只能举一个例子,每个元素的唯一数据都会传递给someFunction()
。所以我假设这是一个要求,无论是通过.each()
还是通过硬编码的值。并且.attr(“某物”)
应该使用数据某物属性名,以便它符合html5
$("input[class^=Class]").each($(this).someFunction($(this).attr("something")));