1

これをライブjqueryトグル(coffeescript)に変換するにはどうすればよいですか?

$('.link').toggle(
  -> $(this).text('less'); $('.entry').css('height', 'auto'),
  -> $(this).text('more'); $('.entry').css('height', '300px')
)

これをライブ関数でラップしようとしましたが、最初のイベントのみがトリガーされ、元に戻りません。

4

1 に答える 1

1

.onを使用してみましたか?.linkが動的にDOMに挿入されていると思いますか?

var hasToggle = false

$('body').on('click', '.link', (e) ->
  unless hasToggle
    $(@).toggle(
      -> 
        $(@).text('less')
        $('.entry').css('height', 'auto')
      ->
        $(@).text('more')
        $('.entry').css('height', '300px')
    )
  hasToggle = true
)

それが機能しなかった理由は、.onまたは.liveで.linkをクリックするたびに、新しい.toggleイベントが再初期化されるため、常に.toggleの最初の関数を呼び出すためだと思います。.toggleにイベントを一度設定すると、ユーザーが最初にイベントをクリックしたときに問題が解決する可能性があります。

于 2012-09-18T13:22:27.157 に答える