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 回答