2012-06-10 177 views
5

我不確定如何構建以下內容。這工作得很好:將此jquery翻譯成咖啡腳本?

$('.hover li').on 'hover', (ev) -> 
    $(this).addClass('active') 

我知道我可以使用,而不是「addClass」切換',但由於其他原因,我需要一個處理輸出功能通過。所以我試過這個:

$('.element').on 'hover', (ev) 
    -> $(this).addClass('active'), 
    -> $(this).removeClass('active') 

這會返回一個錯誤 - 'unexpected,'。我嘗試了其他變體,並且我在網上找到的大多數示例都不使用.on 'hover' (ev) ->格式。

回答

8

不能使用on()這個,如果你想這兩個事件處理程序在同一時間連接。

您需要使用hover()

$('.element').hover(
    (ev) -> $(this).addClass 'active' 
    (ev) -> $(this).removeClass 'active' 
) 

,甚至更好,利用toggleClass()

$('.element').hover (ev) -> $(this).toggleClass 'active' 
+1

我原來使用toggleClass但是如果我上空盤旋,在頁面加載此元素,該元素將啓動作爲活動,然後在懸停,切換到不活動等。 –

+0

這是什麼'ev'? – emaillenin

+0

@emaillenin事件對象,請參閱http://api.jquery.com/hover/ – Niko

-4
$('.element').on 'hover', (ev) -> 
    $(this).addClass('active').removeClass('active') 

應該這樣做。雖然我不明白。您添加類活動,然後刪除它。儘管如此,上面的代碼至少是有效的咖啡文本。

1

jQuery的切換函數有兩個功能,我想這是你追求的:

$('.element').toggle 'hover', 
    (ev) -> 
     $(this).addClass('active') 
     # Do other stuff... 
    (ev) -> 
     $(this).removeClass('active') 
     # Do other stuff...