2010-08-13 13 views

Respuesta

9

un corte sencillo sería decir algo como:

var hoverElem = null; 
$('*').hover(function() {hoverElem = this}); 

luego, cuando es necesario llamar a lo que cada vez funciona para obtener el valor, sólo tiene que utilizar hoverElem

EDIT: este es un menos recursos llamar:

$('*').live('mouseenter', function() { hoverEleme = this; }); 

EDIT 2: debido a .live() está en desuso, se debe utilizar .on()

$("*").on("mouseenter", function() { hoverElem = this; }); 
+10

En lugar de conectar un controlador de mouse a cada elemento (que también se activa en 'mouseleave', debe usar' $ ('*'). Live ('mouseenter', function() {hoverEleme = this;}); ', es mucho * más barato, especialmente cuantos más elementos obtienes. –

+0

debidamente anotado. Pensé que el mousever solo hacía mouseenter cuando solo había la primera función en la llamada. –

+0

.live ha quedado en desuso. – moosefetcher

1

No sé si hay una forma estándar, pero probablemente vincularía un evento "mouseover" a todos los elementos que podría querer mover hacia abajo si está sobre ellos y luego probar para ver si está actualmente arrastrando un objeto.

De nuevo, realmente no conozco su configuración exacta, pero podría tener una variable global var currentlyDragging = false y luego, cuando comience a arrastrar, configúrelo en true. Luego, cuando pasas el mouse sobre un elemento que quieres alejar, puedes probar para ver si tu variable currentyDragging es verdadera y, si es así, puedes moverla.

Bit complicado, pero realmente no puedo pensar en otra forma de hacerlo de la parte superior de mi cabeza. :)

8
$('*').on('mouseenter', function() { hoverEleme = this; }); 

Esto es mucho más barato que la fijación de un controlador de ratón para cada elemento (que también dispara contra mouseleave), especialmente los más elementos que se obtienen.

+0

Esto funciona mucho mejor, con el .hover, me sale mal 'esto' de vuelta ... – TrySpace

Cuestiones relacionadas