2013-03-11 197 views
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()調用當我點擊按鈕時,第二個實時彈出窗口顯示出來,然後從那裏開始維護它的切換行爲。

+0

是有必要解除綁定,當你防止你的下一個點擊handler.Is getHelp和Ajax調用什麼的默認操作的點擊?我認爲最好通過類來附加這些處理程序,而不是通過名稱獲取元素並自行循環,只需要執行$('。my-popover-class')。click(function(){// Your Logic });並將該事件附加到該類的所有對象。雖然原生JavaScript比jQuery更快,但您仍然可以在這裏使用它,但應該使用它。 – BillPull 2013-04-02 15:40:44

回答

0

您不需要遍歷所有元素並逐個初始化彈出窗口,您可以一次對所有具有此名稱的項目應用彈出窗口(與您在循環中執行的操作相同)。

而且你不需要自己手動顯示/隱藏彈出窗口,bootstrap可以爲你做到。

我認爲這應該爲你工作:

$("a[name='click_help_container']").popover(
      { 
       "title":t.title, 
       "content":"<p class='popover_body_text'>"+t.content+"</p>", 
       "html":true, 
       "animation":true, 
       "placement":"bottom", 
       "trigger":"click" 
      }); 
相關問題