2009-07-30 4 views
0

У меня есть селектор «td > a.leftmenuitem:last, div > a.leftmenuitem:last», и я хотел бы немного его упростить. Я пробовал «* > a.leftmenuitem:last», «td, div > a.leftmenuitem:last» и «(td, div) > a.leftmenuitem:last», ни одна из которых не работает так, как делает первый селектор. Является ли такая вещь просто невозможной в синтаксисе селектора, не делая отдельного селектора для каждого?Упростить селектор jQuery

ответ

2

Вы не можете упростить:

td > a.leftmenuitem:last, div > a.leftmenuitem:last 

без какого-то общее, так что вы можете выбрать все соответствующие TD и DIV элементы с одним выражением. Например, если они оба класса БЛА вы могли бы сделать:

.blah > a.leftmenuitem:last 

Но не используйте этот вид выражения, если вы можете избежать этого. Селекторы классов медленны (по сравнению с идентификаторами и тегами).

Есть ли что-то не так с этим?

a.leftmenuitem:last 

?

Кстати, вы уверены, что :last - правильный выбор? Многие ошибочно используют его, ошибочно принимая его за :last-child. :last будет соответствовать только одному элементу, последнему совпадающему элементу, найденному на странице.

+0

Ах да! Конечно: последний ребенок отлично работает. Мне было интересно, почему просто использовать a.leftmenuitem: последний не работал. Благодаря! – DLH

1

Что больше, иногда быстрее. Когда вы используете * вместо td, ваш запрос выполняется намного медленнее.

0

Я не думаю, что вы можете упростить его. Вместо этого я предпочел бы предоставить ссылки, которые вам интересны в уникальном классе, так что вы можете просто сделать "a.<my-unique-class>:last". Таким образом, jquery может просто сканировать все совпадающие теги <a>, не беспокоясь о том, что их родительский элемент является элементом <td>.

0

Ваш селектор достаточно прост. Если вы хотите, чтобы упростить его, вы могли бы сделать что-то вроде:

$('a.leftmenuitem:last').parent().doWhateverYouWereGoingToDo(); 

Я сомневаюсь, что это приведет к сокращению времени выполнения, однако.

0

Может быть, я просто в замешательстве, но если

* > a.leftmenuitem:last 

будет работать для вас, то почему бы не пойти с

a.leftmenuitem:last 

вместо этого?

0

Селектор вы используете

Parent > Child 

матч все дочерние элементы, указанные Child элементов, указанных Parent. Если вы не используете <a> элементов в других частях страницы, которые не являются детьми <div> и <td> элементов, почему бы не просто использовать

$('a.leftmenuitem:last') 

я упускаю что-то?

 Смежные вопросы

  • Нет связанных вопросов^_^