在javascript中访问所有事件侦听器

时间:2013-12-21 17:29:58

标签: javascript dom javascript-events listener

我想做这样的事情:

function('string', function2(){})

我让用户在 string 参数中写下他想要的内容而不是执行 function2 。 问题在于: string 是一个事件监听器。当用户写点击时,我想调用 onClick(),当用户写鼠标时,我想调用 onMouseOver 等等。

我想到了 case 的东西,但我怎样才能访问所有的事件监听器?

3 个答案:

答案 0 :(得分:0)

您应该使用addEventListener

element.addEventListener("string", function() {}, false);

但是,在IE< = 8的情况下,您需要使用attachEvent,因为它不符合标准:

element.attachEvent("string", function() {});

最后,正如kybernetikos在评论中提到的那样,您可以使用简单的字典将mouse映射到mouseover

如果您希望触发事件,则应使用dispatchEvent

答案 1 :(得分:0)

如果使用旧模型添加事件侦听器(即elem.onclick = function(){ /* */ };),则可以使用

elem['on' + event]();

请记住,这只会触发事件侦听器,但不会创建事件(例如,它不会冒泡)。

如果您不想创建一个事件,该事件触发使用addEventlistener添加的事件侦听器和气泡,并完成真实事件所做的所有事情,那么您必须

  1. 使用事件构造函数创建事件:EventCustomEvent
  2. 使用dispatchEvent
  3. 点击它

    有关更多信息和示例,请参阅MDN page

答案 2 :(得分:0)

您可以使用.trigger执行此操作。在jsfiddle中查看此示例。在输入框中输入“dblclick”。

http://jsfiddle.net/jspatel/Suj4H/1/

<input id="writehere"> </input>
  $('#writehere').dblclick(function() {
     alert ('dblclick');
   });


$('#writehere').bind('keypress', function(e) {
    if(e.keyCode==13){
        $(this).trigger( $(this).val() );
    }
});