tutorial coffee jquery syntax coffeescript

jquery - tutorial - coffeescript vs typescript



MĂșltiples funciones como argumentos en CoffeeScript (2)

Esta pregunta ya tiene una respuesta aquí:

No puedo por mi vida resolver esto o encontrar una solución en línea. Estoy tratando de averiguar cómo escribir un script en CoffeeScript desde JavaScript basado en jQuery.

El guión es este:

jQuery(''.post-thumb a'').hover( function() { jQuery(this).find(''.overlay'').fadeIn(150); }, function() { jQuery(this).find(''.overlay'').fadeOut(150); });

Al principio intenté reescribirlo así:

thumb_overlay => $(''.post-thumb a'').hover => $(this).find(''.overlay'').fadeIn(150) ,=> $(this).find(''.overlay'').fadeOut(150)

Pero eso no funcionó, así que pensé en publicar aquí. Entonces, ¿cómo escribo ese JavaScript en CoffeeScript?


Creo que casi has llegado, pero necesitas algunos paréntesis (para agrupar cosas) y algunas barras invertidas para evitar que CoffeeScript malinterprete las nuevas líneas. Prueba esto:

thumb_overlay => $(''.post-thumb a'').hover / (=> $(this).find(''.overlay'').fadeIn(150)), / (=> $(this).find(''.overlay'').fadeOut(150))

También puede combinarlo todo en una sola línea, pero puede lamentarlo en unos meses:

thumb_overlay => $(''.post-thumb a'').hover (=> $(this).find(''.overlay'').fadeIn(150)), (=> $(this).find(''.overlay'').fadeOut(150))

Y por cierto, vaya a la página de inicio y presione "Probar CoffeeScript", que es una manera fácil de ordenar pequeños fragmentos de CoffeeScript; Comience con la versión -> para reducir el ruido en el JavaScript y luego cambie a => cuando obtenga el JavaScript correcto.

No estoy seguro de si quiere => formularios en este caso, el formulario -> formulario:

$(''.post-thumb a'').hover / (-> $(this).find(''.overlay'').fadeIn(150)), / (-> $(this).find(''.overlay'').fadeOut(150))

te daría el JavaScript con el que comenzaste:

$(''.post-thumb a'').hover((function() { return $(this).find(''.overlay'').fadeIn(150); }), (function() { return $(this).find(''.overlay'').fadeOut(150); }));

Y si no te gustan las barras invertidas, puedes hacer esto:

$(''.post-thumb a'').hover( -> $(this).find(''.overlay'').fadeIn(150) -> $(this).find(''.overlay'').fadeOut(150) )

O si sus funciones son más largas, podría darles nombres y omitir gran parte del problema:

fadeIn = -> $(this).find(''.overlay'').fadeIn(150) fadeOut = -> $(this).find(''.overlay'').fadeOut(150) $(''.post-thumb a'').hover(fadeIn, fadeOut)

Tiendo a preferir este enfoque tanto en JavaScript como en CoffeeScript, me parece mejor.


Para aquellos que buscan una respuesta en 2014 CoffeeScript,

$(''someSelector'').hover -> alert "hello" , -> alert "world"

compila en

$(''someSelector'').hover(function() { return alert("hello"); }, function() { return alert("world"); });