我正试图在<li>
内部的锚点元素上下载一个事件,而<li>
上的侦听器正常工作正常,但它不适用于任何其他元素上的锚点。 怪异的事情,它的工作FireFox
只GWT SinkEvent不能正常工作,除非在Firefox上
的HTML输出是一样的东西:
<li>
Some Text
</li>
<li>
Some Text<a class='myClass'>Anchor</a>
</li>
Java代码听者
this.eventListener = new EventListener() {
@Override
public void onBrowserEvent(Event e) {
Element elem = e.getTarget();
//This means we want to use the option selection
switch (e.getTypeInt()) {
case Event.ONCLICK:
if (LIElement.is(elem) && !elem.hasClassName('myClass')) {
selectOption((LIElement) elem);
} else {
LIElement li = (LIElement) elem.getParentElement();
createContact(li);
}
break;
case Event.ONMOUSEOVER:
//do something
break;
case Event.ONMOUSEOUT:
//do something
break;
}
}//End of onBrowserEvent
};//End of event listener
我使用它来创建内容:
LIElement li = Document.get().createLIElement();
AnchorElement createContactLI = Document.get().createAnchorElement();
createContactLI.addClassName(NEW_CONTACT_CLASS);
createContactLI.setInnerText("Add new contact");
createContactLI.setId("myID");
li.appendChild(createContactLI);
ulPanel.appendChild(li);
这下沉事件:
Event.sinkEvents(ulPanel, Event.ONCLICK | Event.ONMOUSEOVER | Event.ONMOUSEOUT);
Event.setEventListener(ulPanel, this.eventListener);`
我试了一下
- Sinked锚的情况下,没有铁锅
- 包裹anchorElement锚并添加clickHandler事件,没有工作
- 将anchorElement转换为liElement,没有工作
- 顺便提一下,处理anchorEl时不会触发断点EMENT
- 也试过CSS和z索引,没有工作
我所要做的 - 写全功能小部件,这将要花费很长一段时间
你的帮助确实真的很感谢
我想你可能需要添加一个特定的事件处理程序到锚元素。并在锚元素事件侦听器调用。 event.preventDefault()。否则,浏览器将自动处理默认的定位点击。锚元素可能会捕获点击事件,并且不会将事件传播到您的ulPanel。我知道你在做什么可能会起作用,但是我过去遇到过这个问题,并决定将处理程序添加到li元素本身而不是容器中。 – 2014-09-08 18:34:22
@ChrisHinshaw感谢您的评论,这对我来说很合理。 顺便说一句我做了你现在正在做的事情,并使用处理程序来自我元素和传播我停止它,当点击锚点:) – Sedz 2014-09-08 22:08:42