Jquery - более эффективно использовать несколько селекторов или каждый - PullRequest
1 голос
/ 04 января 2011

У меня есть что-то вроде этого

<input class = "Class1"/>
<input class = "Class2"/>
<input class = "Class3"/>
<input class = "Class4"/>
...
..
.

$(".Class1").someFunction("data1");
$(".Class2").someFunction("data2");
$(".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")));

идеи

Ответы [ 3 ]

1 голос
/ 04 января 2011

Независимо от того, как вы их выбираете, вам все равно нужно будет сделать each(), если ваш пример кода похож на настоящий код. Это потому, что вы передаете уникальные данные каждому вызову функции.

Но вы должны как минимум добавить tagName к селектору.

$("input[something]").each(function() {
    $(this).someFunction($(this).attr("something"));
});

Без tagName jQuery должен будет смотреть на каждые элемент на странице, вместо input элементов.

1 голос
/ 04 января 2011

Что касается самых быстрых селекторов, то лучше сделать:

<div id="container">
    <input data-something="1" />
    <input data-something="2" />
    <input data-something="3" />
    <input data-something="4" />
</div>

Тогда вы можете сделать:

$('#container input').each(function(){});
0 голосов
/ 04 января 2011

^= совпадения операторов также начинаются с:

$("input[class^=Class]").each($(this).someFunction($(this).attr("something")));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...