1
在javascript中,假設我有兩個節點(節點A,節點B)。當我點擊節點A時,是否可以將「點擊」事件傳遞給節點B,以便節點B的事件處理程序將執行。javascript中的一個dom轉移到其他dom中的事件
在javascript中,假設我有兩個節點(節點A,節點B)。當我點擊節點A時,是否可以將「點擊」事件傳遞給節點B,以便節點B的事件處理程序將執行。javascript中的一個dom轉移到其他dom中的事件
觸發點擊事件上的按鈕和其他投入要素相當容易,他們有一個click()
方法:
elementA.onclick = function() { elementB.click(); }
這是與其他事件或元素稍微複雜的是不支持click
方法,你需要使用fireEvent
或dispatchEvent
觸發事件,根據瀏覽器:
elementA.onclick = function() {
var elementB = document.getElementById("elementB");
if ("dispatchEvent" in elementB) {
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
elementB.dispatchEvent(evt);
}
else if ("fireEvent" in elementB)
elementB.fireEvent("onclick");
}
但是,如果你不知道什麼當前類型的事件被連接到一個元素都仍然要轉移他們到另一個元素。元素是否跟蹤某些內部數據結構中的附加事件? – jayarjo 2010-12-22 09:51:39
@jayarjo:不。你可以編寫自己的方法來附加事件處理程序,並保持對元素,函數和事件類型的引用。 jQuery爲您使用其方法附加的事件執行此操作。 – 2010-12-22 10:22:35