3
我發現了一個相關的帖子裏面並沒有幫助: Twitter bootstrap:Popovers are not showing up on first click but show up on second clickPopovers沒有出現在第一次點擊,但出現在第二次點擊
所不同的是在我的網頁我有需要酥料餅的幾個要素(幾提示圖標),所以我需要循環他們..
我的標記:
<a href="#" name="click_help_container" id="click_mainhomeform_tasks" data-original-title=""><img class="help_icon" src="http://media.mysite.com/pub/images/help/tips-icon.png"> </a>
這是我的javascript:
var h=document.getElementsByName("click_help_container");
for (i=0;i<h.length;i++)
{
$('#'+h[i]['id']).click(
function()
{
var id=$(this).attr("id");
getHelp(id,$(this),function(t,elem)
{
var isVisible = false;
var clickedAway = false;
$(elem).unbind('click');
$(elem).popover(
{
"title":t.title,
"content":"<p class='popover_body_text'>"+t.content+"</p>",
"html":true,
"animation":true,
"placement":"bottom",
"trigger":"manual"
}).click(function(e)
{
$(this).popover('show');
clickedAway = false;
isVisible = true;
e.preventDefault();
});
$(document).click(function(e) {
if(isVisible & clickedAway)
{
$(elem).popover('hide')
isVisible = false;
clickedAway = false;
}else
{
clickedAway = true;
}
});
//$(elem).popover('show');
});
});
}
問題是,當我點擊tips-icon.png按鈕時,彈出窗口在第一次點擊時不顯示(我猜這是因爲我有2個.click()調用當我點擊按鈕時,第二個實時彈出窗口顯示出來,然後從那裏開始維護它的切換行爲。
是有必要解除綁定,當你防止你的下一個點擊handler.Is getHelp和Ajax調用什麼的默認操作的點擊?我認爲最好通過類來附加這些處理程序,而不是通過名稱獲取元素並自行循環,只需要執行$('。my-popover-class')。click(function(){// Your Logic });並將該事件附加到該類的所有對象。雖然原生JavaScript比jQuery更快,但您仍然可以在這裏使用它,但應該使用它。 – BillPull 2013-04-02 15:40:44