javascript函数在.html()调用后失败

时间:2015-12-15 06:53:04

标签: javascript jquery twitter-bootstrap

我有一个bootstrap下拉按钮,在用户点击它之后,控制器加载并用JS响应,其中它从部分重新呈现html。

在Bootstrap下拉按钮中,我有<ul class="dropdown-menu keep-open">,其中使用了保持开放类:

$(document).ready ->
  $('.keep-open').on 'click': (e) ->
    e.stopPropagation()
    return

要在单击时保持下拉打开,默认情况下保持关闭(我在下拉列表中有一个表单)。调用工作正常,直到我提交for和控制器JS重新呈现按钮,然后keep-open停止工作,下拉菜单继续关闭。

我可以将此菜单以其他方式打开,还是阻止$('.keep-open').on 'click'再次被调用?

1 个答案:

答案 0 :(得分:1)

要详细说明评论者,您的问题来自直接绑定的事件处理程序。仅当事件发生在绑定到的确切元素上时才会调用处理程序。您的重新渲染将删除原始元素,并且新创建的元素没有附加处理程序。

您可以通过使用委托事件处理程序来解决此问题:

$('body').on('click' , '.keep-open' , function() { ... });

您应该会在jQuery .on() docs

中看到有关“直接和委派事件”的部分