15

GWT で CSS セレクター (例: "#someId .className a") を使用して任意の要素を取得しようとしています。

サード パーティの Web サイトで使用できる JS ウィジェットを作成しており、ページ上の要素を操作できるようにしたいと考えています。JavaDocs を検索しても、セレクターで要素を見つけることができるものは何もありません。私は GQuery に出くわしましたが、プロジェクトが死んでいる可能性があり、GWT 2 で動作するかどうかはわかりません.

私が検討したオプションの 1 つは、既存のライブラリ (jQuery、Mootools、Prototype など) を GWT クラスにラップし、JSNI を通じて目的の動作を公開することです。これは非常にかさばる可能性があるようです。

GWT で一般的な CSS セレクターを使用した経験がある人はいますか?

4

5 に答える 5

8

DOMDOM ツリーにアクセスするための多くのラッパー メソッドを提供するクラスがあります。私が知っているCSSセレクタjQueryスタイルを取る機能はありません.GWTは、直接ではなく、ウィジェット(など)を介してDOM要素にアクセスすることを奨励/強制するだけです-あなたの場合、そのような「低レベル」アプローチは必要とされる。純粋なJava GWTメソッドを介してそれを引き出す唯一の方法は、DOMクラスの大量の(おそらく恐ろしい)チェーン/呼び出しを介することです。あなたがしなければならなかったのはいくつかにアクセスすることだけだったなら、それはより簡単でしょうid- そのためにそこにありますRootPanel.get(id)(そしてDOM.getElementById(id)、それらは返すオブジェクトのタイプが異なります)。

ただし、すでに提案したように、JSNI はより良い解決策を提供する可能性があります。たとえば、$wnd.$("#someId .className a")JSNI から返してみElementてください。実際には、JSNI から何でも返すことができます。 int DOM要素または何かとして。

PS: GQuery プロジェクトは死んでいるか非アクティブに見えますが$、GWT で一見使用できるように、jQuery 呼び出し ( など) をどのようにラップしたかを確認する価値があるかもしれません。

于 2010-03-09T01:40:00.210 に答える
6

GwtQuery を使用、GWT 2.4 に更新: http://code.google.com/p/gwtquery/

セレクターの例:

//select an element having id equals to 'container'
GQuery myElement = $("#container");
//select all elements having 'article' as css class
GQuery allArticles = $(".article");
/select all cells of tables
GQuery allCells = $("table > tr > td");
//find the ul elements being inside a element with class 'article' itself inside a element with id 'container'
GQuery articleUls = $("#container .article ul");

http://code.google.com/p/gwtquery/wiki/GettingStarted

于 2012-07-28T05:50:33.363 に答える
3

新しいブラウザで利用可能なquerySelector()とquerySelectorAll()を使用できます...

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

...ブラウザのサポートに関して、querySelector()およびquerySelectorAll()は、Firefox 3.1以降、IE8以降(IE8標準モードのみ)、およびSafari3.1以降でサポートされています。

于 2010-07-02T10:31:09.537 に答える