Упрощенный Селектор jQuery
Вопрос
У меня есть селектор".td > a.leftmenuitem:last, div > a.leftmenuitem:last
", и я хотел бы немного упростить это.Я уже пытался " .* > a.leftmenuitem:last
", "td, div > a.leftmenuitem:last
", и "(td, div) > a.leftmenuitem:last
", ни один из которых не работает так, как первый селектор.Неужели такого рода вещи просто невозможны в синтаксисе селектора без создания отдельного селектора для каждого?
Решение
Вы не можете упростить:
td > a.leftmenuitem:last, div > a.leftmenuitem:last
без наличия чего-то общего, чтобы вы могли выбрать все соответствующие элементы td и div с помощью одного выражения.Например, если бы у них обоих был класс blah, вы могли бы сделать:
.blah > a.leftmenuitem:last
Но не используйте такого рода выражения, если вы можете этого избежать. Селекторы классов работают медленно (по сравнению с селекторами идентификаторов и тегов).
Есть ли что-то неправильное в just?
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')
Я что-то упустил?