使用自定义事件对象触发事件处理程序

时间:2013-08-20 15:04:53

标签: javascript jquery javascript-events

是否可以使用自定义事件对象触发某个对象上的事件? 即。

$('#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);
});

一些背景知识:

在我的实例中,Element2是一个几乎相同的Element1克隆,但位置不同。单击Element2时,应将单击转发到Element1。

我已经有代码来识别Element1的正确子元素,根据Element2的子元素被单击,但元素1的子元素上的click事件处理程序需要正确设置pageX和pageY属性.click()省略这些完全属性。

在我的示例中足以执行深度克隆并包含事件处理程序,因为目标属性设置不正确。

我的实例中的一个解决方法是克隆元素保留对原始元素(以及每个子元素)的引用以及检查该引用的处理程序,但是,我更喜欢处理程序不知道的解决方案克隆过程 - 尤其是因为有很多处理程序需要修改!

2 个答案:

答案 0 :(得分:0)

您可以尝试.trigger()它接受一个事件对象作为参数

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

演示:Fiddle

答案 1 :(得分:0)

我不太了解您的背景逻辑,但您可以尝试使用jQuery中的trigger。您可以触发重用事件对象的事件:

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

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

    event.something = "Something";

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