5

以下の構造をどのように構築すればよいかわかりません。これはうまくいきます:

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

'addClass' の代わりに 'toggle' を使用できることはわかっていますが、他の理由から、ハンドラー出力関数を渡す必要があります。だから私はこれを試しました:

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

これにより、「予期しない」というエラーが返されます。他のバリエーションを試してみましたが、オンラインで見つけたほとんどの例では、この.on 'hover' (ev) ->形式を使用していません。

4

3 に答える 3

8

on()一度に両方のイベント ハンドラーをアタッチする場合は、これを使用できません。

使用する必要がありますhover()

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

またはさらに良いことに、toggleClass()

$('.element').hover (ev) -> $(this).toggleClass 'active'
于 2012-06-10T15:33:03.373 に答える
1

jQuery のトグル関数は 2 つの関数を取ります。

$('.element').toggle 'hover', 
    (ev) -> 
        $(this).addClass('active')
        # Do other stuff...
    (ev) -> 
        $(this).removeClass('active')
        # Do other stuff...
于 2012-06-10T15:11:37.383 に答える
-4
$('.element').on 'hover', (ev) ->
  $(this).addClass('active').removeClass('active')

するべきです。わかりませんが。クラスをアクティブに追加してから削除します。それにもかかわらず、上記のコードは有効な coffeescript です。

于 2012-06-10T15:09:11.893 に答える