У меня есть селектор «td > a.leftmenuitem:last, div > a.leftmenuitem:last
», и я хотел бы немного его упростить. Я пробовал «* > a.leftmenuitem:last
», «td, div > a.leftmenuitem:last
» и «(td, div) > a.leftmenuitem:last
», ни одна из которых не работает так, как делает первый селектор. Является ли такая вещь просто невозможной в синтаксисе селектора, не делая отдельного селектора для каждого?Упростить селектор jQuery
ответ
Вы не можете упростить:
td > a.leftmenuitem:last, div > a.leftmenuitem:last
без какого-то общее, так что вы можете выбрать все соответствующие TD и DIV элементы с одним выражением. Например, если они оба класса БЛА вы могли бы сделать:
.blah > a.leftmenuitem:last
Но не используйте этот вид выражения, если вы можете избежать этого. Селекторы классов медленны (по сравнению с идентификаторами и тегами).
Есть ли что-то не так с этим?
a.leftmenuitem:last
?
Кстати, вы уверены, что :last
- правильный выбор? Многие ошибочно используют его, ошибочно принимая его за :last-child
. :last
будет соответствовать только одному элементу, последнему совпадающему элементу, найденному на странице.
Что больше, иногда быстрее. Когда вы используете * вместо td, ваш запрос выполняется намного медленнее.
Я не думаю, что вы можете упростить его. Вместо этого я предпочел бы предоставить ссылки, которые вам интересны в уникальном классе, так что вы можете просто сделать "a.<my-unique-class>:last"
. Таким образом, jquery может просто сканировать все совпадающие теги <a>
, не беспокоясь о том, что их родительский элемент является элементом <td>
.
Ваш селектор достаточно прост. Если вы хотите, чтобы упростить его, вы могли бы сделать что-то вроде:
$('a.leftmenuitem:last').parent().doWhateverYouWereGoingToDo();
Я сомневаюсь, что это приведет к сокращению времени выполнения, однако.
Может быть, я просто в замешательстве, но если
* > a.leftmenuitem:last
будет работать для вас, то почему бы не пойти с
a.leftmenuitem:last
вместо этого?
Селектор вы используете
Parent > Child
матч все дочерние элементы, указанные Child
элементов, указанных Parent
. Если вы не используете <a>
элементов в других частях страницы, которые не являются детьми <div>
и <td>
элементов, почему бы не просто использовать
$('a.leftmenuitem:last')
я упускаю что-то?
Ах да! Конечно: последний ребенок отлично работает. Мне было интересно, почему просто использовать a.leftmenuitem: последний не работал. Благодаря! – DLH