2012-02-13 67 views
0

我不认为我的具体scenerio的解释会在这里帮助很大。所以总之,我需要知道如何在任何和所有事件上调用函数。无论特定元素发生什么事件,Idea都会调用相同的函数。如何让一个元素触发任何事件和所有事件的功能?

在我的头上来做到这一点会去像的理想方式:

<div onAnyEvent="function()"></div> 

不是:

<div onClick="function()" onMouseover="function()" onKeypress="function()"></div> 
+0

你想在pur JS或jquery中做它吗? – 2012-02-13 07:51:00

+0

我想用纯JS做。感谢您的询问。 – person0 2012-02-13 07:52:33

+0

类似的问题 http://stackoverflow.com/questions/5123356/jquery-action-fires-on-any-event 希望这有助于.... – 2012-02-13 08:03:12

回答

0

最好的方法我已经通过研究发现,是创建一个事件侦听器每个事件都在同一个元素上,如下所示:

window.onload = addListeners; 

function addListeners(){ 
    if(window.addEventListener){ 
    document.getElementById('message').addEventListener('keydown',textarea_resize,false); 
    document.getElementById('message').addEventListener('keyup',textarea_resize,false); 
    document.getElementById('message').addEventListener('keypress',textarea_resize,false); 
} 

稍微解释一下:

addEventListener('event to listen to', function_to_be_called, useCapture-value)

第一个参数是你要听(即该事件。 'click''keydown')。

第二个是你想调用的函数:(即validate_form)。

- 您还可以将参数发送到函数:validate_form(e, i)

对于大多数用途,上次使用捕获值通常会设置为false,如果您未指定任何值,则false是自动值。进一步的解释可以得到here

所以一个完整的例子可能是:document.getElementById('message').addEventListener('keydown',textarea_resize,false);,如上所示。

相关问题