2009-05-28 8 views
7

Je suis déclencheur pas un clic sur l'étiquette du corps en utilisant jQuery, j'utilise ce ...cliquez corps de déclenchement avec jQuery

$('body').click(); 

même ce ne

$('body').trigger('click'); 

Toutes les idées? !

+0

Est-ce que vous êtes en train de déclencher l'événement click avant d'avoir défini la fonction click catcher? montrez-nous le code où vous gérez le clic. – duckyflip

+0

Je ne veux pas faire apparaître quelque chose de vieux mais je suppose que la hauteur du corps par défaut d'un document n'est pas la même que la hauteur de la fenêtre. L'utilisation de css pour définir la hauteur à 100% permet de résoudre ce problème, par ex. 'html, body {largeur: 100%; hauteur: 100%; } ' –

Répondre

9

Vous devriez avoir quelque chose comme ceci:

$('body').click(function() { 
    // do something here 
}); 

La fonction de rappel sera appelée lorsque l'utilisateur clique sur la page Web. Vous pouvez déclencher le rappel par programme avec:

$('body').trigger('click'); 
+0

J'ai déjà fait ce que vous avez mentionné .. Lorsque je clique personnellement n'importe où sur la page, le gestionnaire de clic fonctionne parfaitement – ruturaj

+0

voulez-vous dire que vous essayez de _fire_ l'événement? Au lieu de déclencher l'événement, pourquoi ne pas appeler la fonction que votre gestionnaire de clic aurait? –

+1

oui j'essaie de déclencher l'événement, je veux simuler un clic sur le corps. – ruturaj

4

Je l'ai utilisé le code suivant à quelques reprises et il fonctionne doux:

$("body").click(function(e){ 
    //you can then check what has been clicked 
    var target = $(e.target); 
    if (target.is("#popup")) { } 
}); // Added); this for correct syntax 
10

Fait intéressant .. quand je l'ai remplacé

$("body").trigger("click") 

avec

jQuery("body").trigger("click") 

ÇA A MARCHÉ!!!

+14

cela m'indique alors que vous utilisez d'autres frameworks JavaScript sur la page qui ont aussi une fonction $() shorthand définie. –

+0

ou une autre version de JQuery dans un script connexe .. Je l'ai eu en utilisant JQGrid lors de la référence .each() – KevinDeus

2

si toutes choses ont été dites ne fonctionnait pas, revenir à l'essentiel et tester si cela fonctionne:

<html> 
    <head> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script> 
    </head> 
    <body> 
    <script type="text/javascript"> 
     $('body').click(function() { 
     // do something here like: 
     alert('hey! The body click is working!!!') 
     }); 
    </script> 
    </body> 
</html> 

puis me dire si son travail ou non.

+0

hmmm ... il suffit de noter que vous répondez à votre propre question X). de toute façon, vous pouvez faire une alerte ($ toString()); pour vous donner une idée de ce qu'est l'autre "plugin" qui interfère avec jQuery. – Seeker

0

Comme mentionné par Seeker, le problème aurait pu être que vous configurez la fonction click() trop tôt. À partir de votre extrait de code, nous ne pouvons pas savoir où vous avez placé le script et s'il est exécuté au bon moment.

Un point important est d'exécuter ces scripts une fois le document prêt. Cela se fait en plaçant l'initialisation click() dans cette autre fonction comme dans:

jQuery(document).ready(function() 
    { 
    jQuery("body").click(function() 
     { 
     // ... your click code here ... 
     }); 
    }); 

Cela est généralement la meilleure méthode, surtout si vous incluez votre code JavaScript dans votre balise <head>. Si vous l'incluez en bas de la page, la fonction ready() est moins importante, mais elle peut être utile.

Questions connexes