2012-04-26 9 views
0

私のような何かを行うことができます:生のJavaScriptで同等である何火jQueryのは、生のjavascriptでクリックイベント

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

?私は以下を試しました:

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

しかし、それは動作していないようです。ありがとう!

+1

は、クリックすると発生するはずの機能を単に実行する – Ibu

+1

[JavaScriptのイベントをトリガする方法](http://stackoverflow.com/questions/2490825/how-to-trigger-event-in-javascript) – AlienWebguy

+0

@Ibu - この場合は可能ではない... – mike

答えて

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私のコードベースに似たようなものがあります –

+0

einstellungen、moeglicheEvents ... –

+2

@RakeshJuyal thats German。私はしばしば私のスクリプトにドイツ語と英語の名前を混ぜます(私はドイツ出身です)。 –

関連する問題