假设我使用一些HTML创建HTMLPanel
:
<p>
Blah blah <span id='1'>more html... </span>
</p>
现在我想将一个事件处理程序附加到span。我希望将其视为InlineHTML
GWT小部件。我试过了:
HTMLPanel html = new HTMLPanel(stringOfHTML);
parentWidget.add(html);
String id = "1";
Element span = html.getElementById(id);
InlineHTML wid = InlineHTML.wrap(span); // -- error here
html.addAndReplaceElement(wid, id);
倒数第二行死于断言错误:具有现有父窗口小部件的窗口小部件可能无法添加到分离列表。
有没有办法将子元素包装在HTMLPanel
?
这是GWT 2.4。
注意
经过一些评论和回答后,我意识到我忘了提到:通常UiBinder
就是答案,但我没有使用它,因为输入是非程序员在另一个上下文中创建的html文本。
答案 0 :(得分:2)
不,不是真的。您收到此异常是因为<span>
元素已经是某个小部件的一部分。 wrap
方法只能用于在不属于其他窗口小部件的元素之上创建窗口小部件。如果要处理此范围的点击,可以将dom处理程序添加到HTMLPanel
,然后检测单击了哪个元素。
答案 1 :(得分:0)
将您的<span>
转换为UiBinder模板中的InlineLabel,并附上您想要的任何内容:)。