我正試圖在<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