我有一个bootstrap下拉按钮,在用户单击它之后,控制器加载并使用JS进行响应,在JS中,它从部分代码中重新渲染html。

在Bootstrap下拉按钮中,我有<ul class="dropdown-menu keep-open">,其中keep-open类由以下人员使用:

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


要保持下拉菜单在打开时的打开状态,默认情况下是关闭状态(下拉菜单中有一个表单)。调用工作正常,直到我提交for且控制器JS重新渲染按钮,然后keep-open停止工作且下拉菜单保持关闭。

我可以以其他方式打开此菜单还是导致$('.keep-open').on 'click'再次被阻止的原因?

最佳答案

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

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

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


您应该在jQuery .on() docs中看到有关“直接和委托事件”的部分

关于javascript - 调用.html()后jQuery函数失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34282770/

10-11 04:06