Как с помощью gwtquery мы можем выбирать элементы, атрибуты которых содержат более одного слова?

Скажем, я хочу выбрать такой элемент, как

<div class="my class">InnerHTML</div>

Хотя это можно легко сделать с помощью селекторов CSS с помощью [class="my class"], gwtquery имеет отличие в том смысле, что он не принимает кавычки на входе. Он принимает только такие значения, как [attribute=attributevalue].

Когда я применил тот же селектор в GQuery с пробелом между ними, совпадений не было. У меня есть ощущение, что это может быть из-за какого-то неправильного разбора в библиотеке для таких случаев. Это так?

Если да, есть ли другой способ выбрать эти элементы с помощью GQuery?


person Saurabh Agarwal    schedule 23.05.2012    source источник


Ответы (2)


У меня работает (по крайней мере с gwtquery-1.1.0 и gwt 2.4.0)

GQuery myClassDivs = $("div[class=\"my class\"]");

возвращает совпадение для <div class="my class"/>.


Однако с атрибутом class обычно лучше использовать селектор ~=, потому что <div class="my class"/> и <div class="class my"/> обычно следует рассматривать как эквивалентные.

Поэтому я бы предложил использовать

GQuery myClassDivs = $("div[class~=my][class~=class]");

Это также выберет что-то вроде <div class="my class special"/>, что обычно желательно.

person Chris Lercher    schedule 23.05.2012
comment
Спасибо! Использование нескольких селекторов атрибутов действительно сработало. Я согласен со стилем использования \. Я пробовал это раньше. Как-то не получилось. Конечно, проблема может быть не связана с gquery, а может быть связана с какой-то ошибкой кода где-то еще в моем коде. - person Saurabh Agarwal; 25.05.2012

Как правило, для выбора атрибутов со словами, разделенными пробелами, вы будете использовать селектор [att~=val], как упомянутый Крисом Лерчером.

Или, вы знаете, поскольку вы все равно выбираете по атрибуту class, вместо этого вы можете просто использовать селекторы классов:

GQuery myClassDivs = $("div.my.class");

В соответствии с этим:

Когда я применил тот же селектор в GQuery с пробелом между ними, совпадений не было. У меня есть ощущение, что это может быть из-за какого-то неправильного разбора в библиотеке для таких случаев. Это так?

Если вы имеете в виду добавление пробела в значение атрибута без кавычек, это не ошибка синтаксического анализа в библиотеке. Сам селектор недопустим, поскольку пробелы в значениях атрибутов без кавычек явно недопустимы.

Если значения атрибутов в кавычках не распознаются, то это является ошибкой синтаксического анализа в библиотеке.

person BoltClock    schedule 24.05.2012