2013-08-20 111 views
0

是否可以通過自定義事件對象觸發某個對象上的事件? 即帶自定義事件對象的觸發事件處理程序

$('#Element1').click(function(event){ 
    console.log('Element1 clicked', event); 
} 

$('#Element2').click(function(event) 
{ //handle click on one element 

    //optionally modify the event object 
    event.target=Something; 

    //Trigger the event handler(s) on some other element using modified event object 
    $('#Element1').click(event); 
}); 

一點背景:

在我的實例元素2是元素1的但具有不同的位置幾乎相同的克隆。當單擊元素2時,該點擊應該被轉發到元素1。

我已經有代碼來根據Element2的哪個子元素被點擊來標識Element1的正確子元素,但元素1的子元素上的click事件處理程序需要正確設置pageX和pageY屬性,並且.click()省略這些屬性完全。

它確實不是在我的示例中,只需執行深度克隆幷包含事件處理函數即可,因爲目標屬性設置不正確。

在我的實例中的一個解決方法是克隆的元素保留對原始元素(對於每個子元素)的引用以及檢查該引用的處理程序,但是,我更喜歡解決方案,其中處理程序沒有了解克隆過程 - 不僅僅是因爲有很多處理程序需要修改!

回答

0

我不明白你的良好背景的邏輯,但你可以從trigger jQuery的嘗試。您可以觸發重用事件對象的事件:

$('#Element1').click(function(event){ 
    console.log('Element1 clicked with changed event: ' + event.something); 
}); 

$('#Element2').click(function(event){ 

    event.something = "Something"; 

    $('#Element1').trigger(event); 
}); 
+0

我應該正確閱讀文檔 - 我沒有發現觸發器功能的第二次重載。 – DJL

0

您可以.trigger()嘗試它接受一個事件對象作爲參數

$('#Element1').trigger(event); 

演示:Fiddle

相關問題