在bootstrap 2.3弹出窗口中,我显示了一些html代码。当我点击它时,我需要触发一个js函数,但我很难做到这一点。
如果我单击包含弹出窗口内呈现的HTML的div,而不是单击弹出窗口内部的内容,则js函数可以正确执行。
这是我的咖啡
$('[data-toggle~=popover]').popover({
html: true
content: ->
$("#content").html()
})
$(".updateit").on "click", ->
console.log "pippo"
和html
<a data-placement="right" data-toggle="popover" href="#">click me</a>
<div id="content">
<div class="updateit" style="color:red">abc</div>
</div>
出于测试目的,div#content不是隐藏的,如果我点击它,控制台上会打印出"pippo“,但是如果我点击弹出的内容( html看起来一样),控制台上什么也不会打印出来。
有没有办法从popover内容内部调用js函数?
谢谢。
发布于 2013-11-27 14:56:23
这看起来像一个常见的jQuery事件绑定陷阱。可能发生的情况是,在创建弹出窗口之前,$(".updateit").on "click", () -> ...
正在运行。该特定函数只会将单击事件绑定到现有元素;新元素不会应用该事件。由于popover在运行后将使用“updateit”类创建自己的元素,因此该事件不会应用于它。
幸运的是,修复非常简单。$(document).on 'click', '.updateit', () -> ..
应该可以做到这一点。这将应用于文档中“updateit”类的每个元素,无论它是何时创建的。
相关的jsbin - http://jsbin.com/ALESUXib/1/edit
https://stackoverflow.com/questions/20235453
复制相似问题