2016-02-24 87 views
0

我有一個函數,在我的頁面創建彈出窗口,從AJAX調用中檢索內容。在創建過程中,我的函數會更改彈出窗口的位置(它是頁面範圍的,所以我將left屬性設置爲0並將箭頭移動到指向我的元素)。一切工作正常的第一時間,但如果我出來,然後移動鼠標再次酥料餅不從它的默認位置移動(而且也不箭頭)第二次顯示彈出窗口改變其位置

我的代碼:

var last_opened_popover = null 
jQuery(document).ready(function(){ 
    jQuery("*[data-poload]").mouseenter(function(){ 
     if (last_opened_popover != null){ 
      last_opened_popover.popover("destroy") 
     } 
     var element = jQuery(this) 
     last_opened_popover = element 
     var polId = element.data("poload") 
     jQuery.ajax({ 
      url : my_url, 
      type : "POST", 
      data : { 
       //datas 
     }, 
     success : function(result){ 
      var supporter_list = compose_supporter_list(result); 
      var left = element.position().left + 75 
      element.popover({ 
       content : supporter_list, 
       html : true, 
       placement : "bottom", 
       template : '<div id="shown-popover" class="popover pgsc-popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>' 
      }) 
      element.popover("show") 
      var popover = jQuery("#shown-popover") 
      popover.css("left", 0) 
      popover.find(".arrow").css("left", left) 
     } 
     }) 
    }).mouseleave(function(){ 
     jQuery(this).popover("destroy") 
    }) 
}) 
+0

是'URL缺少逗號:my_url 類型:「POST」,'只是一個錯字? –

+0

您可能正在處理與所有這些缺少的分號相關的問題(請在代碼中與它們一起嘗試) –

+0

您認爲這樣做可能不是這種情況:'var element = jQuery(this) last_opened_popover = element var polId = element.data(「poload」)' –

回答

0

問題是,全部生成的彈出窗口共享相同的ID。即使我在創建另一個之前破壞了每個元素,ID也會以某種方式保留,所以jQuery無法訪問新元素。解決的方法是簡單地生成新的ID,以確保沒有酥料餅共享相同的ID,我做到了只需使用計數器:

var last_opened_popover = null 
var popover_counter = 0 
jQuery(document).ready(function(){ 
    jQuery("*[data-poload]").mouseenter(function(){ 
     if (last_opened_popover != null){ 
      last_opened_popover.popover("destroy") 
     } 
     var element = jQuery(this) 
     last_opened_popover = element 
     var polId = element.data("poload") 
     jQuery.ajax({ 
      url : my_url, 
      type : "POST", 
      data : { 
       //datas 
      }, 
      success : function(result){ 
       var supporter_list = compose_supporter_list(result); 
       var left = element.position().left + 75 
       element.popover({ 
        content : supporter_list, 
        html : true, 
        placement : "bottom", 
        template : '<div id="shown-popover-' + popover_counter + '" class="popover pgsc-popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>' 
       }) 
       element.popover("show") 
       var popover = jQuery("#shown-popover-" + popover_counter) 
       popover.css("left", 0) 
       popover.find(".arrow").css("left", left) 
       popover_counter++ 
      } 
    }) 
}) 
相關問題