2010-04-03 330 views

回答

4

触发点击事件上的按钮和其他投入要素相当容易,他们有一个click()方法:

elementA.onclick = function() { elementB.click(); } 

这是与其他事件或元素稍微复杂的是不支持click方法,你需要使用fireEventdispatchEvent触发事件,根据浏览器:

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"); 
} 
+0

但是,如果你不知道什么当前类型的事件被连接到一个元素都仍然要转移他们到另一个元素。元素是否跟踪某些内部数据结构中的附加事件? – jayarjo 2010-12-22 09:51:39

+0

@jayarjo:不。你可以编写自己的方法来附加事件处理程序,并保持对元素,函数和事件类型的引用。 jQuery为您使用其方法附加的事件执行此操作。 – 2010-12-22 10:22:35