Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery—使用多个选择器或每个选择器更有效_Javascript_Jquery_Html_Internet Explorer 8_Performance - Fatal编程技术网

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传递不同的字符串。如何适应向函数的每个实例传递不同的值?我更新了。使用html5
data-
属性。如果我给每个输入元素一个不同的类名,然后选择“按类名”,那么我可以将发送到每个输入的值硬编码到java脚本中。我不必使用每个元素,但我必须为每个输入元素使用单独的选择器。@kralco626:这取决于应用程序的最终要求。最终,我宁愿选择一个DOM而不是几个。但是,我不会使用
class
属性作为数据存储机制,如果这是我想要的。如果
someFunction
是一个jQuery插件,或者每个插件都不需要它。@Josiah:是的,但我只能举一个例子,每个元素的唯一数据都会传递给
someFunction()
。所以我假设这是一个要求,无论是通过
.each()
还是通过硬编码的值。并且
.attr(“某物”)
应该使用
数据某物属性名,以便它符合html5
$("input[class^=Class]").each($(this).someFunction($(this).attr("something")));