Agregar eventos a Agregar eventos en jQuery -

A principios de esta semana publiqué un consejo de usabilidad sobre el uso de CSS y la funcionalidad de eventos personalizados de MooTools para agregar automáticamente el cursor “puntero” cuando un elemento recibe un evento de “clic” adjunto. Recibí numerosas solicitudes para una versión de jQuery y creo que descubriré cómo replicar la funcionalidad.

Índice de contenidos
  1. El error de JavaScript de jQuery
  2. El “éxito” de jQuery JavaScript
  3. ACTUALIZACIÓN: La solución jQuery JavaScript

El error de JavaScript de jQuery

/* crear evento personalizado */jQuery.event.special.click = { setup: function() { $(this).css('cursor','pointer'); }, desmontaje: function(namespaces) { $(this).css('cursor',''); }};/* uso; nada diferente de lo habitual*/$(document).ready(function() {$('#click-me').click(function() {var col="rgb(" + (Math.floor(Math.random ( ) * 256)) + ',' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ')';$ ( this).css('fondo',col);});});

Utilice el objeto de evento especial para agregar un evento llamado personalizado clic. Cuando se agrega el evento, el método de configuración cambia el cursor del elemento a un puntero. Si eliminamos ese evento, el cursor del puntero se eliminará. El problema con el código anterior es que parece anular el evento de clic predeterminado y cuando realmente haces clic en el elemento, no sucede nada. ¡Maldición!

El “éxito” de jQuery JavaScript

/* escucha el desplazamiento/clic */$(document).ready(function() {/* intenta arreglar */$('*').each(function() {$(this).mouseover(function() { if(jQuery.data(this,'events').click) {$(this).css('cursor','pointer');}});});/* ¿uso? */$('# clic) -yo').click(función() {var col="rgb(" + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256 )) + ',' + (Math.floor(Math.random() * 256)) + ')';$('#click-me').css('fondo',col);}); }) ;

La única manera de hacer que esto funcione sin modificar el núcleo de jQuery es colocar un evento de entrada de mouse en cada elemento en el DOM que verifique si hay un evento de clic presente para el elemento dado. Si es así, muestre el puntero del cursor. Este es un método desagradable para lograr el objetivo, pero es el único que encontré. Si se agregara un elemento al DOM dinámicamente, lo anterior no funcionaría.

ACTUALIZACIÓN: La solución jQuery JavaScript

jQuery.event.special.click = { configuración: función() { $(this).css('cursor','puntero'); falso retorno; }, desmontaje: fuction() { $(this).css('cursor',''); falso retorno; }};

Brandon Aaron y Scott Kyle nos bendijeron con la solución; Parece que estuve muy cerca. Agregar retorno falso; lo hubiera hecho.

¡Gracias a Brandon y Scott por ayudarme!

Te podría interesar...

Deja una respuesta

Subir