JQuery селектор для класса, за которым следует пробел, а затем снова другой класс - PullRequest
1 голос
/ 14 июня 2011

У меня есть такая разметка:

<div class="classA classB">the content</div>

Мне нужен селектор, который выбирает все div, которые начинаются с classA, и я сделал это:

$("div[class^='classA'");

но так как у меня (например) есть и классы вроде:

<div class="classAsuffix">

этот селектор тоже будет захватывать этот div, и я этого не хочу.

Итак, я хочу селектор, который получит мне все элементы div, которые начинаются с classA, но затем после этого у них будет пробел, так что в общем: дайте мне все элементы div, имеющие "classA (space) someOtherClass".

Надеюсь, я согласен с моей просьбой. Спасибо за вашу помощь!

О, забыл упомянуть, я пытался это:

$("div[class^='classA ']") but it doesn't work...

Ответы [ 5 ]

4 голосов
/ 14 июня 2011

Кавычки вокруг вашего значения должны быть двойными, а не одинарными. На самом деле, это не имеет значения. Итак:

var matches = $('div[class^="classA "]');

... который работает с последней версией jQuery .Он соответствует элементу с атрибутом class , начинающимся с "classA ", и поэтому не соответствует div class="classA", но соответствует div class="classA classB".Но ваша версия с одинарными кавычками тоже работает .Я пробовал Chrome 11 (Linux & Windows), Firefox 3.6 (Linux), Firefox 4.0.1 (Windows), IE6, IE7, IE9, Opera 11 (Linux & Windows) и Safari 5 (Windows).Я пробовал jQuery 1.6.1 (ссылки выше на «последний») и jQuery 1.5.2 .Все дали один и тот же результат, найдя только то, что, как я понимаю, вы хотите, чтобы он нашел.

Но - и это немного не по теме - я бы сделал шаг назад и внимательно посмотрел бы, почему эта потребность возникает,Это очень необычно, что говорит о том, что может быть лучший подход ... Однако, не зная основополагающей необходимости, я могу ошибаться.

0 голосов
/ 22 ноября 2012

Это выберет все div, которые имеют и classA, и classB, но не div с только classAsuffix и classB:

$ ( 'div.classA.classB');

0 голосов
/ 14 июня 2011

вы можете использовать $ ('div [class ~ = "classA"]'); Смотрите следующую ссылку для объяснения: http://api.jquery.com/attribute-contains-word-selector/

0 голосов
/ 14 июня 2011

Это должно получить все DIV с class="classA classB":

$("div[class^='classA'][class$='classB']");

Выбирает все DIV, где атрибут класса НАЧИНАЕТСЯ С 'classA' и ЗАВЕРШАЕТСЯ '' ClassB '

http://jsfiddle.net/9dQ9Z/

0 голосов
/ 14 июня 2011

Вы можете объединить два утверждения.

$("div[class^='classA'].classA");

В этом случае вы должны проверить наличие класса, начинающегося с classA, а также наличие у элемента этого класса. Но это также будет действительным class="classASuffix classA classB" или class="classA".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...