我有一个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/