Проверка соответствия селектора элементам, отмеченным определенным классом - PullRequest
0 голосов
/ 09 сентября 2011

У меня есть общий селектор jQuery (строка):

var selector = '#files li div';

и название класса:

var myClass = 'folder';

Я хочу проверить, соответствует ли селектор элементам, класс которых хранится в myClass . До сих пор я использовал экземпляр селектора для вызова метода hasClass ():

var match = $(selector).hasClass(myClass);

Это работает, но я подумал, что может существовать более эффективный метод jQuery, который позволяет не создавать экземпляр jQuery, чтобы получить все элементы, соответствующие селектору.
Меня беспокоит память, используемая экземпляром, созданным только для этой проверки, и ничего более, хотя она находится внутри метода псевдокласса, который не возвращает / не предоставляет никакой ссылки на этот экземпляр.

Можете ли вы предложить что-то лучше?


В показанном примере я установил значение myClass в «папку», чтобы просто представить проблему, но в приложении я не знаю ее заранее, так как она определяется действиями пользователя.

Ответы [ 2 ]

3 голосов
/ 09 сентября 2011

hasClass() вернет true, если любой из соответствующих элементов имеет указанный класс; нет, если все из них делают.

Вы можете найти следующее больше, чем вы хотите:

var match = $(selector).filter('.' + myClass);

Но тогда вы могли бы упростить это до:

var match = $(selector + '.' + myClass);

И затем вы проверите, есть ли у вас какие-либо элементы, используя атрибут .length.

if (match.length) // then some were matched!

С точки зрения беспокойства об использовании памяти ... не . преждевременная оптимизация - корень всего зла . Использование памяти здесь крошечный . Если вы хотите оптимизировать свою программу (есть ли необходимость в данный момент?), Посмотрите на функции, которые вызываются большое количество раз, или посмотрите на циклы, которые имеют большое количество итераций, или посмотрите на манипулирование DOM и посмотрите, они могут быть объединены; один селектор jQuery не будет иметь какого-либо влияния на скорость вашей программы в относительном выражении.

0 голосов
/ 09 сентября 2011

Либо назначьте Id для уникальности или же создайте класс, если вы хотите применить к более чем одному экземпляру

...