2013-11-27 71 views
1

在bootstrap 2.3彈出窗口中,我顯示一些html代碼。我點擊它時需要觸發一個js函數,但我很難這樣做。從bootstrap彈出窗口內容執行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#內容不會隱藏,如果我點擊它,「皮波」打印在控制檯,但是如果我點擊popover內容(html看起來相同),控制檯上沒有任何東西被打印出來。

有沒有辦法從popover內部調用js函數?

謝謝。

回答

2

這看起來像一個常見的jQuery事件綁定陷阱。在創建彈出窗口之前,可能發生的事情是$(".updateit").on "click",() -> ...正在運行。該特定功能只會將點擊事件綁定到現有元素;新的將不會應用該事件。由於彈出窗口在運行後會使用「updateit」類創建自己的元素,因此該事件不適用於它。

幸運的是,修復非常簡單。 $(document).on 'click', '.updateit',() -> ..應該做的伎倆。這將適用於文檔中類「updateit」的每個元素,而不管它是何時創建的。

相關jsbin - http://jsbin.com/ALESUXib/1/edit