2013-04-17 47 views
0

我通過ajax調用動態生成一個表,並且希望特定列中的所有元素在懸停時顯示彈出窗口。我在成功事件下面的代碼:列中所有元素的Bootstrap彈出窗口?

strBtn1 = '<span data-trigger="hover" data-placement="right" data-content="testing popovers in a table" class="test22">test</span>' 
$('#myReport').append('<tr><td>Column 1</td><td>' + strBtn1 + '</td></tr>'); 

然後我在主腳本嘗試這樣做:

$(".test22").each(function() { 
    $(this).popover(); 
}); 

,我想到的是生成的表,有15行,但懸停在「測試「文本什麼都不做。

我也有,做各種各樣的「控制」的工作:

<span id="test11" data-trigger="hover" data-placement="right" data-content="testing popovers in a table">test</span> 

這是直接在標題中的HTML文件,這是主要的腳本:

$("#test11").popover(); 

所以在頭部我得到一個「測試」,當我懸停時顯示彈出式窗口。

想法?

+0

於是我就想通了,爲什麼它在做什麼呢,哼......它從未處理「每個」語句,因爲在DOM中不存在的元素尚未... 現在要弄清楚如何解決它: ) –

+0

用文檔預處理程序包裝這個 –

+0

這是。下面發佈的答案:) –

回答

0

把這成功解決了問題。

counter += 1; 
tmpID = 'thisCell' + counter; 
strBtn1 = '<span id="' + tmpID + '" data-trigger="hover" data-placement="right" data-content="testing popovers in a table" class="test22">test</span>' 
$('#myReport').append('<tr><td>Column 1</td><td>' + strBtn1 + '</td></tr>'); 
$('#' + tmpID).popover(); 

然後我完全刪除了「each」語句。

1

你需要確保 $(".test22").each(function() { $(this).popover(); });只運行表已被填充,否則將無法找到任何類的。

要測試它是否正常工作,請嘗試在每個函數內部放置一個控制檯日誌,以查看函數實際執行的次數。

如果您沒有收到任何控制檯日誌,那麼這意味着您必須在有任何東西需要迭代之前嘗試運行它們。

如果確實如此,那麼我建議將每個jQuery放入一個函數中,然後在ajax成功中調用該函數。