Evento Javascript, el parámetro “e”, “evento” u otro

Mi codigo

var transformString = Modernizr.prefixed('transform'); var inputDown, inputMove, inputUp; if (window.Touch) { inputDown = "touchstart"; inputMove = "touchmove"; inputUp = "touchend"; } else { inputDown = "mousedown"; inputMove = "mousemove"; inputUp = "mouseup"; } var mouse = { startX: 0, startY: 0 }; var innerElement = $('.threedee'); function normalizedX(event){ return window.Touch ? event.originalEvent.touches[0].pageX : event.pageX; } function normalizedY(event){ return window.Touch ? event.originalEvent.touches[0].pageY : event.pageY; } $(document).bind(inputDown, function(event){ event.preventDefault(); if(event.button === 2) return true; // right-click mouse.startX = normalizedX(event); mouse.startY = normalizedY(event); // store the transform state // globalMatrix.setMatrixValue($inner.css('-webkit-transform')); $(document) .bind(inputMove, move) .one(inputUp, function(){ $(document).unbind(inputMove); }); }); function move(event){ event.preventDefault(); var offsetX = normalizedX(event) - mouse.startX; var offsetY = normalizedY(event) - mouse.startY; if(event.shiftKey){ offsetX = roundToMultiple(offsetX, 15); offsetY = roundToMultiple(offsetY, 15); } innerElement.css(transformString, 'rotateY('+offsetX+'deg) rotateX('+-offsetY+'deg)'); /* move relative to the initial position $inner.css('-webkit-transform', globalMatrix.rotate(-offsetY, offsetX, 0));//*/ } function roundToMultiple(number, multiple){ var value = number/multiple , integer = Math.floor(value) , rest = value - integer; return rest > 0.5 ? (integer+1)*multiple : integer*multiple; }​ 

Trate de mirar la parte javascript solamente, mi problema está ahí.

Me pregunto por qué el “evento” pasará como parámetro y argumento para la mayor parte de la función en el script. En algún momento puede ser “e” también. ¿Quién los creó?

Yo mismo nunca creé ninguna variable de “evento”, quien es responsable de esta variable de “evento”.

jQuery llamará a tu función de evento y pasará un objeto de evento al argumento. No debe preocuparse por crear la variable, y puede dar al argumento el nombre que desee (suponiendo que sea un nombre de variable válido).

La creación del objeto de evento debe considerarse “caja negra”, y no debe preocuparse por su estructura o implementación exacta. Simplemente haga lo que la documentación y los ejemplos le indiquen que haga, y todo estará bien.

Sin embargo, la clave es tener un parámetro en la función; de lo contrario, no tendrá acceso al objeto de evento que pasa jQuery.

Como han indicado otras respuestas, probablemente sea una buena idea evitar el event nombre, porque si no tiene cuidado, podría entrar en conflicto con una variable global del mismo nombre en ciertos navegadores. En su lugar, use e o similar y luego obtendrá un NameError si olvida tener un parámetro en su función.

 // Wrong way #1 $('.class').bind('click', function() { event.preventDefault(); // may attempt to call .preventDefault() on window.event if it exists }); // Wrong way #2 (fails fast since e probably won't be on the global object) $('.class').bind('click', function() { e.preventDefault(); // ReferenceError thrown here }); // The correct way $('.class').bind('click', function(e) { // or (event) if you want, but the first example can bite you e.preventDefault(); // no problem }); 

jQuery pasa un objeto de evento jQuery normalizado, corregido por errores y con características a su función de controlador como primer parámetro. Debería nombrar este parámetro e (o similar) para que nunca se refiera accidentalmente al window.event global window.event (que es el objeto de evento nativo en Chrome e IE) y obtenga un error rápido.

Las funciones que hacen referencia a e o event son funciones de callback. Básicamente, los llama jQuery y pasan una variable como resultado (usted define la función allí, pero la llama, asumiendo que está definida). Es por eso que puede definirse como e o event (también podría ser purple_elephant ).

Referencia : http://en.wikipedia.org/wiki/Callback_(computer_programming )