Coffeescript - это просто синтаксический сахар (который мне нравится, кстати) для написания JS. Вы не можете отойти от объектной модели, которую JS налагает на CS.
Вы всегда можете сделать что-то вроде этого:
menu = $ ".menu"
Но это на самом деле ничего не покупает.
Что касается вашего примера кода, вы можете написать нечитаемый код на любом языке. Эквивалентный код в JS будет еще более нечитаемым (для тех, кто знает CS так же хорошо, как и JS). Вы можете сделать ваш код более читабельным, разбив ваши обратные вызовы на более мелкие части. Если вы действительно хотите, вы можете подумать, что код подменю отделен от кода смещения ... но это не имеет большого значения:
hoverIn = ->
offset = $(@).offset()
submenu = $(@).siblings "ul"
submenu.css
left: offset.left + $(@).outerWidth()
top: offset.top
submenu.show()
hoverOut = -> $(@).siblings("ul").hide()
$ ->
$('.menu').hide()
$('.sub').hover hoverIn, hoverOut
Это совет, который вы можете использовать на любом языке.