2012-04-26 58 views
0

在jQuery中我可以这样做:火原javascript中的单击事件

$('#example').click(); 

什么是原始的JavaScript等价?我试过以下内容:

document.getElementById('example').click(); 

但这似乎不起作用。谢谢!

+1

只需运行应该发生的功能点击 – Ibu 2012-04-26 18:25:06

+1

可能重复的[如何在javascript中触发事件](http://stackoverflow.com/questions/2490825/how-to-trigger-event-in-javascript) – AlienWebguy 2012-04-26 18:25:34

+0

@Ibu - 在这种情况下不可能... – mike 2012-04-26 18:29:32

回答

4

我在框架使用此:

function fireEvent() { 
     var eventType = null, i, j, k, l, event, 
      einstellungen = { 
      'pointerX': 0, 
      'pointerY': 0, 
      'button': 0, 
      'ctrlKey': false, 
      'altKey': false, 
      'shiftKey': false, 
      'metaKey': false, 
      'bubbles': true, 
      'cancelable': true 
     }, moeglicheEvents = [ 
      ['HTMLEvents', ['load', 'unload', 'abort', 'error', 'select', 'change', 'submit', 'reset', 'focus', 'blur', 'resize', 'scroll']], 
      ['MouseEvents', ['click', 'dblclick', 'mousedown', 'mouseup', 'mouseover', 'mousemove', 'mouseout']] 
     ]; 

     for(i=0,j=moeglicheEvents.length;i<j;++i) { 
      for(k=0,l=moeglicheEvents[i][1].length;k<l;++k) { 
       if(arguments[1] === moeglicheEvents[i][1][k]) { 
        eventType = moeglicheEvents[i][0]; i = j; k = l; 
       } 
      } 
     } 

     if(arguments.length > 2) { 
      if((typeof arguments[2]) === 'object') { 
       change(einstellungen, arguments[2]); 
      } 
     } 

     if(eventType === null) { 
      throw new SyntaxError('Event type "' + arguments[1] + '" is not implemented!'); 
     } 

     if(document.createEvent) { 
      event = document.createEvent(eventType); 

      if(eventType === 'HTMLEvents') { 
       event.initEvent(arguments[1], einstellungen.bubbles, einstellungen.cancalable); 
      } else { 
       event.initMouseEvent(arguments[1], einstellungen.bubbles, einstellungen.cancelable, document.defaultView, 
        einstellungen.button, einstellungen.pointerX, einstellungen.pointerY, einstellungen.pointerX, einstellungen.pointerY, 
        einstellungen.ctrlKey, einstellungen.altKey, einstellungen.shiftKey, einstellungen.metaKey, einstellungen.button, arguments[0]); 
      } 

      arguments[0].dispatchEvent(event); 
     } else { 
      einstellungen.clientX = einstellungen.pointerX; 
      einstellungen.clientY = einstellungen.pointerY; 

      event = document.createEventObject(); 

      event = extend(event, einstellungen); 

      arguments[0].fireEvent('on' + arguments[1], event); 
     } 
    } 

参数1是元素,第二个参数的情况下,所述第三(可选)的选项。

对不起,我忘了重写某些部分:

_.isObject()(typeof arguments[2]) == 'object'

_.change变化和需要此功能:

function change() { 
    var name; 

    for(name in arguments[1]) { 
     if((typeof arguments[1][name]) === 'object') { 
      if((typeof arguments[0][name]) === 'undefined') { 
       arguments[0][name] = {}; 
      } 

      change(arguments[0][name], arguments[1][name]); 
     } else { 
      arguments[0][name] = arguments[1][name]; 
     } 
    } 

    return arguments[0]; 
}; 

编辑:

你的情况这将是fireEvent(document.getElementById('example'), 'click');

+0

+1我在我的代码库中有类似的东西 – 2012-04-26 18:36:27

+0

einstellungen,moeglicheEvents ... – 2012-04-27 06:52:56

+2

@RakeshJuyal多数民众赞成在德国。我经常在我的脚本中混合使用德语和英语名字(我来自德国)。 – 2012-04-27 07:28:18