2016-03-15 42 views
0

我有以下的HTMLjQuery:如何从一个元素捕获事件并将其分配给不同的元素?

<a class="link" href="#">Link</a> 

<button class="btn"> 
    BUTTON 
</button> 

<p class="hidden">This is a paragraph</p> 

和jQuery的

$(document).ready(function(){ 
    $('.link').on('click', function(){ 
     displayText(); 
    }); 

    function displayText(){ 
     $('p').show(); 
    } 
}); 

链接点击时显示的<p>标签。我想捕获链接事件并将其分配给按钮。有什么建议么?

更新: 我在寻找的是捕获链接上的事件并停止它,显示一个对话框并将该事件分配给对话框中的按钮。

的jsfiddle:https://jsfiddle.net/0ct4r7y0/

+0

使用'$(“ BTN”) '而不是'$('。link')'。或者,如果你想同时使用'$('。btn,.link')'。 – DanielGibbs

+1

按钮应该做什么?我的意思是......为什么不像'$(“。btn”)。trigger(“click”)''那样做?目前还不清楚你在做什么......看起来像一个* XY问题*问题 –

+0

目前还不清楚你试图达到什么目的。将事件分配给DOM元素是一件非常奇怪的事情。 –

回答

1

您可以触发点击buttona.link只要链接被点击这样

$('.link').on('click', function(event){ 
    displayText(); 
    console.log(event); 
    $('button').trigger('click', event); 
}); 

// to test that the event is passing properly 
$('button').on('click', function(event, originalEvent){ 
    console.log(event, originalEvent); 

    //originalEvent.target === <a class="link"></a> 
    //event.target === <button></button> 
}); 

注意的情况下,在按钮单击处理originalEvent有是从a.link的点击传入的事件。

+0

谢谢,但有可能存储事件并在以后使用它?我正在寻找的是捕获事件,显示一个对话框并将该事件分配给对话框上的一个按钮。 – ultimatecoder

+0

是的,为什么不,你也可以使用[curry pattern](http://www.sitepoint.com/currying-in-functional-javascript/) –

+0

来存储originalevent的按钮回调不知道这将如何适用于我问题。 – ultimatecoder

0

可能是你,而你找到你想要捕捉的DOM听众才可以重新绑定该事件(函数)作为另一个DOM,并希望Visual Event可以帮助你

相关问题