CSS селектор, который заканчивается чем-то и не содержит чего-либо - PullRequest
1 голос
/ 08 ноября 2011

Мне нужно найти любые теги <a>, в которых href оканчивается 'pdf', а , а не , содержит 'test'.

, например,

<a href="/abc/tes.pdf">link</a>

Все, что я знаю, это первое условие;

jQuery('a[href$=".pdf"]')

Научи меня остальным.

Спасибо.

1 Ответ

4 голосов
/ 08 ноября 2011
jQuery('a[href!="test"][href$=".pdf"]');

Или лучше:

jQuery('a[href$=".pdf"]').not('[href="test"]');

А вот и причина:

Поскольку [name! = "Value"] является расширением jQuery, а не частью CSS спецификация, запросы с использованием [name! = "value"] не могут использовать преимущества повышение производительности, обеспечиваемое встроенным DOM querySelectorAll () метод. Для повышения производительности в современных браузерах используйте $ ("your-pure-css-selector"). not ('[name = "value"]') вместо этого.

РЕДАКТИРОВАТЬ: Здесь «лучше» может быть не правильно, [значение $ = «имя»] также не является чистым селектором CSS2, но документация jQuery не упоминает об этом. Здесь требуется дополнительное исследование ...

РЕДАКТИРОВАТЬ 2: Похоже, я не продумал это до конца. Что вы, вероятно, хотите, это:

jQuery('a[href$=".pdf"]').not('a[href*="test"]');

Что гласит: выбрать все a элементы, которые имеют атрибут href, который заканчивается на ".pdf", но не выбрать a элементы, которые имеют "test" в качестве подстроки в любом месте href атрибут.

http://api.jquery.com/category/selectors/

...