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