2011-06-23 3 views
3

J'ai l'écouteur d'événement myObject.addEventListener('click',this.doSomething,false) sur l'élément. Cela fonctionne très bien quand je clique sur la souris mais je n'arrive pas à comprendre comment déclencher le clic de JavaScript. Il semble que element.click() ne fonctionne pas pour divs? J'utilise jQuery et j'ai également essayé trigger('click') mais rien ne se passe.Comment puis-je exécuter EventListener 'clic' à partir de JavaScript

Comment puis-je exécuter le EventListener en JavaScript?

Mise à jour:

Voici un exemple de code http://jsbin.com/iniwi5/2

+0

Il existe des tonnes de doublons exacts, par ex. [Comment puis-je déclencher un clic sur un événement JavaScript] (http://stackoverflow.com/questions/2381572/how-can-i-trigger-a-javascript-event-click), [JavaScript: Invocation d'un événement click d'une ancre tag de javascript] (http://stackoverflow.com/questions/980709/javascript-invoking-click-event-of-an-anchor-tag-from-javascript), etc. – maerics

+0

Aucun de ces "doublons" n'est formulé avec les auditeurs d'événements en tête. – zjmiller

+0

Oui, ceci est spécifique à l'écouteur d'événement, si j'utilisais le programme d'écoute jQuery .click() normal, le code fonctionne très bien, mais il semble que addEventListener se comporte différemment. – jpkeisala

Répondre

4

Pouvez-vous lier l'événement à l'aide au lieu jQuery?

$(myobject).click(function() { 

}); 

Puis

myobject.trigger('click'); 

aurait programme déclencher le clic.

+0

'cliquer' sur un div est fondamentalement un événement personnalisé que vous ne pouvez pas faire nativement. Donc je suis d'accord - c'est la façon la plus simple de le faire. –

+0

Je suis d'accord pour contourner ce problème, je ne pouvais pas comprendre cela avec les écouteurs d'événements, donc je refactor mon code à utiliser .click() – jpkeisala

-3

serait comme cela, d'après le code que vous avez fourni:

var obj = document.getElementById('hello'); 

if (obj.addEventListener) { 
    obj.addEventListener('click', function() {foo()},false); 
} else { 
    obj.attachEvent ('onclick', function() {foo()}); 
} 

foo être:

function foo(){ 
    alert("foo"); 
} 

Référence: http://help.dottoro.com/ljeuqqoq.php

Edit: Correction d'une erreur pour Chrome et Shuold fonctionne maintenant dans les deux.

+0

Wow ... J'ai été volé. lol – StevieG

+0

L'affiche ne demande pas comment enregistrer un écouteur d'événement. La question est, étant donné qu'un écouteur d'événement est déjà lié, comment puis-je le déclencher manuellement? – John

-1

Essayez ceci:

myObject.click; // no `()` 

OU:

(myObject.click)(); 
+0

'myObject.click' est faux - si le clic existe, c'est une fonction. Le deuxième exemple est le même que 'myObject.click()', qui est seulement standardisé pour [les éléments INPUT de certains types] (http://www.w3.org/TR/DOM-Level-2-HTML/html. html # ID-2651361).Vous ne pouvez pas compter sur des éléments arbitraires pour le supporter. – John

0

Pour déclencher un écouteur d'événement click ajouté via addEventListener, vous avez besoin d'envoyer manuellement un événement de clic, en utilisant dispatchEvent (pour-conforme aux normes navigateurs) ou fireEvent (pour IE < 9).

Questions connexes