59 votes

jquery / javascript: function (e) {.... qu'est-ce que e? pourquoi est-ce nécessaire? que fait-il / accomplit-il réellement?

 $('#myTable').click(function(e) {
    var clicked = $(e.target);
    clicked.css('background', 'red');
});
 

Quelqu'un peut-il m'expliquer cela et expliquer pourquoi e est nécessaire et ce qu'il fait réellement?

67voto

Frankie Points 12557

Utiliser e n'est qu'un raccourci pour event . Vous pouvez passer n'importe quel nom de variable que vous désirez.

 // would work just the same
$('#myTable').click(function(anyothername) {
    var clicked = $(anyothername.target);
});
 

Vous pouvez en savoir plus sur la gestion des événements par jQuery .

10voto

David Hoerster Points 18815

L'un des avantages à avoir e (l'objet qui a déclenché l'événement) permet de prévenir la propagation de comportements par défaut pour certains éléments. Par exemple:

<a id="navLink" href="http://mysite/someOtherPage.htm">Click For Info</a>

affiche un lien que l'utilisateur peut cliquer. Si un utilisateur a désactivé JavaScript (pourquoi? Je ne sais pas), vous voulez que l'utilisateur de naviguer à someOtherPage.htm lorsqu'il clique sur le lien. Mais si ils ont JavaScript activé, alors vous voulez afficher une boîte de dialogue modale et de ne pas quitter la page. Vous serait en mesure de gérer cela en empêchant le comportement par défaut de l'ancre, de lien et de l'affichage de la modale en tant que tel:

$("#navLink").click(function(e) {
  e.preventDefault();  //this prevents the user from navigating to the someOtherPage.htm
  $("#hiddenDiv").dialog({
    //options
  });  //show the dialog
});

Donc, avoir que de paramètres disponibles permet, entre autres choses décrites dans d'autres réponses, d'empêcher le comportement par défaut de l'élément sélectionné.

Espérons que cette aide!

8voto

Je parle en théorie je ne suis pas expert, mais j'ai obtenu le résultat souhaité en utilisant lui, le petit (e) qui n'a pas à être un e lol

J'ai pensé à elle. C'est une façon de passer le même événement à partir d'une fonction à l'autre.

En termes plus simples. Je voulais faire de la navigation de la page d'un élastique en fonction de défilement, cependant, je voulais la page pour naviguer sur par hover "et" je voulais le même que la navigation se cliquable sous certaines conditions. Je voulais aussi la même dynamique de navigation à partir d'autres sur des événements qui n'étaient pas des liens. Pour maintenir le courant de la cible et d'utiliser la fonction de navigation, j'ai dû mettre le petit (e) parce que jQuery perdra le champ d'application de $(ce) que la même cible de la fonction de lol. Voici un exemple rapide.

function navigate_to_page(e){
var target = $(e.currentTarget).attr('href'); //--This is the same as $(this) but more static to bring out of it's scope
    $('html, body').animate({
    'scrollTop':$(target).offset().top-0,
    'scrollLeft': $(target).offset().left-$(window).width()*0.0}, 2000, 'easeOutBounce');
}

Ne laissez pas le charabia de vous confondre. C'est juste une simple page de défilement de l'animation. La chose à faire attention, c'est l' e.currentTarget. e est variable et currentTarget est un jQuery équivalent de $(ce), de sorte que ceux ensemble, c'est un amas Globulaire $(ce) de la fonction. Maintenant, je l'appelle par une autre fonction avec des condistions comme

$('#myNavigationDiv a').on('mouseenter', function(e){
    if($(myCondition) === true){
        return false;
        }else{
        navigate_to_page(e);
        }
    });

Voir comment le petit (e) lié ensemble?

Maintenant, vous pouvez remplacer (e) à whateveryouwant). En appelant e dans les deux fonctions qu'elle correspond à l'e.currentTarget et vous pouvez l'appliquer à tout ce détaillées des fonctions spécifiques dont vous avez besoin et vous sauver LITTÉRALEMENT des pages de code lol

6voto

Matthew Flaschen Points 131723

C'est le paramètre formel de la fonction. jQuery passera dans un objet event lorsque la fonction est appelée. Ceci est utilisé pour déterminer la cible. Comme indiqué dans la documentation , jQuery transmettra toujours un objet événement même lorsque le navigateur (par exemple, IE) ne le fait pas.

Dans ce cas, la cible vous indique quel élément a été cliqué à l'origine.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X