Найдите элемент селектором CSS в GWT

Я пытаюсь захватить произвольный элемент с помощью селектора CSS (например, "#someId .className") в GWT.

Я создаю виджет JS, который может жить на стороннем веб-сайте и хотеть смочь взаимодействовать с элементами на странице. Поиск JavaDocs, я не вижу ничего, что может найти элемент селектором. Я действительно сталкивался с GQuery, но кажется, что проект мог бы быть мертвым, и я не уверен, работает ли это с GWT 2.

Одна возможность, которую я рассмотрел, переносит существующую библиотеку (jQuery, Mootools, Прототип, и т.д.) в класс GWT и выставляет желаемое поведение через JSNI. Кажется, что это могло бы быть очень builky.

У кого-либо есть опыт с помощью универсальных селекторов CSS в GWT?

15
задан etoleb 9 March 2010 в 01:10
поделиться

2 ответа

Есть класс DOM , который предоставляет множество методов оболочки для доступа к дереву DOM. Нет функции, которая использует стиль jQuery селектора CSS, о котором я знаю - GWT просто поощряет / обеспечивает доступ к элементам DOM через виджеты (и тому подобное), а не напрямую - хотя я понимаю, что в вашем случае такой "низкоуровневый" подход может быть нужным. Единственный способ, которым я могу добиться этого с помощью чистых методов Java GWT, - это множество и множество (возможно, ужасных) цепочек / вызовов класса DOM . Было бы проще, если бы все, что вам нужно было сделать, это получить доступ к некоторому id - для этого есть RootPanel.get (id) DOM.getElementById (id) ], они различаются типом возвращаемых объектов).

Однако, как вы уже предположили, JSNI может предложить лучшее решение - попробуйте вернуть, например, $ wnd. $ ("# SomeId .className a") из JSNI в качестве элемента . - на самом деле, вы можете вернуть что угодно из JSNI, GWT просто испортит секунду, когда вы попытаетесь использовать, скажем, int как элемент DOM или что-то в этом роде.

PS: хотя проект GQuery кажется мертвым / неактивным, возможно, стоит проверить, как они обернули вызовы jQuery (например, $ ), чтобы их можно было использовать в GWT.

8
ответ дан 1 December 2019 в 03:34
поделиться

Вы можете использовать querySelector () и querySelectorAll (), доступные для новых браузеров ...

http://www.javascriptkit.com/dhtmltutors/css_selectors_api.shtml

. .. с точки зрения поддержки браузера querySelector () и querySelectorAll () поддерживаются в Firefox 3.1+, IE8 + (только в стандартном режиме IE8) и Safari 3.1+

3
ответ дан 1 December 2019 в 03:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: