我正在评估GWT作为我未来项目开发AJAX应用程序的替代方案之一.直到它现在它一样好,但现在我一直在寻找一种方法来捕获HTML小部件内的标签上的点击.我想在HTML中编写链接,但我想在我的应用程序中处理点击,而不是重新加载页面.想象一下,我有以下HTML:
<p>GWT is a great tool and I think it will be my preferred tool to develop web applications. To check out my samples <a id='mylink'>click here</a></p>
我想捕获文本"点击此处"部分的点击.我到目前为止所做的是尝试将id"mylink"附加到某种可点击的窗口小部件,并使用该窗口小部件的ClickHandler处理该点击,但没有任何工作.
有没有办法做到这一点?顺便说一句,我对Javascript知之甚少.
先感谢您.
你也可以这样做:
Anchor.wrap(DOM.getElementById("mylink")).addClickHandler(yourClickHandler);
Run Code Online (Sandbox Code Playgroud)
DOM
上课是com.google.gwt.user.client.DOM
.
评论后编辑.
好的,该方法适用于GWT小部件中的元素(元素附带HTML文件).如果需要在GWT代码中生成它,则可以单独添加link元素.但是,如果您的内容来自数据库,那么它将无效.
HTMLPanel html = new HTMLPanel("GWT is a great tool and I think it will be my preferred tool to develop web applications. To check out my samples ");` Anchor a = new Anchor("click here"); a.addClickHandler(yourClickHandler); html.add(a);
如果它是完全动态的,我现在还不知道.我正在尝试使用HTML()小部件,您可以在其中插入您的点击处理程序,但我找不到正确的方法来确定点击是否在A元素中.奇怪.
最后的方法(我希望)
这个应该最终工作.我认为这是应该做的方式,特别是它允许任何HTML结构.有两种方式:
1.转换HTMLPanel中的链接
这个将找到所有A元素并将它们转换为锚点.它会忽略href
属性,但你可以轻松添加它:)
HTMLPanel html = new HTMLPanel("<p>Multilink example 2: <a>link1</a> and <a>link2</a></p>"); NodeList<Element> anchors = html.getElement().getElementsByTagName("a"); for ( int i = 0 ; i < anchors.getLength() ; i++ ) { Element a = anchors.getItem(i); Anchor link = new Anchor(a.getInnerHTML()); link.addClickHandler(...); html.addAndReplaceElement(link, a); }
2.将链接插入准备好的点
只需插入占位符,即应插入小部件.您也可以使用该addAndReplaceElement()
方法,但使用字符串ID.
Anchor a1 = new Anchor("a1"); a1.addClickHandler(...); Anchor a2 = new Anchor("a2"); a2.addClickHandler(...); HTMLPanel html = new HTMLPanel("<p>Multilink example: <span id='a1'></span> and <span id='a2'></span></p>"); html.add(a1, "a1"); html.add(a2, "a2");
归档时间: |
|
查看次数: |
6143 次 |
最近记录: |