2014-02-12 36 views
7

如果在具有足夠內容的頁面上打開多個jQuery UI對話框來強制滾動條,則在對話框之間單擊會導致處於活動狀態的內容滾動到最佳。jQuery UI多個對話框內容跳轉到頂部

你可以看到這個的jsfiddle爲例(一箱是在另一個後面):http://jsfiddle.net/kRAd4/ 如果您滾動他們都下來了一點,然後從一個盒子點擊其他你會看到這一點。

有什麼辦法可以阻止它嗎?

這裏是關於的jsfiddle網站使用的代碼,很簡單:

HTML:

<div class="hi">Here<br />Is<br />A<br />Lot<br />Of<br />Text<br />Here<br />Is<br />A<br />Lot<br />Of<br />Text<br />Here<br />Is<br />A<br />Lot<br />Of<br />Text<br />Here<br />Is<br />A<br />Lot<br />Of<br />Text<br /></div> 

<div class="hi">Here<br />Is<br />A<br />Lot<br />Of<br />Text<br />Here<br />Is<br />A<br />Lot<br />Of<br />Text<br />Here<br />Is<br />A<br />Lot<br />Of<br />Text<br />Here<br />Is<br />A<br />Lot<br />Of<br />Text<br /></div> 

的Javascript:

$(".hi").dialog({ 
    height: 200 
}); 

更新: 我嘗試添加return false既對話選項mouseDownfocus,並沒有什麼區別。

回答

3

與Jared相同,我找到了描述您正在使用的錯誤的頁面。它確實談到了1.9.2正常工作。

但是,大多數情況下,您不會在您的項目中回退到以前的版本,而是希望找到能夠保留當前文件的解決方案。因此,我測試了一些代碼。我用你的jQuery 2.0.2版本和jQuery UI 1.10.3版本做了一個html頁面。

以下解決方案解決您的問題,但只有當你肯定不會有什麼其他的影響,或者如果你已經測試並獲得滿意的結果,我會使用它。

我取代在這段代碼的jQuery UI的文件(整個塊)的_moveToTop功能(你可以在同一鏈路here找到它):

_moveToTop: function(event, silent) { 
    var $parent = this.uiDialog.parent(); 
    var $elementsOnSameLevel = $parent.children(); 

    var heighestZIndex = 0; 
    $.each($elementsOnSameLevel, function(index, element) { 
     var zIndexOfElement = $(element).css('z-index'); 
     if (zIndexOfElement) { 
      var zIndexOfElementAsNumber = parseInt(zIndexOfElement) || 0; 
      if (zIndexOfElementAsNumber > heighestZIndex) { 
       heighestZIndex = zIndexOfElementAsNumber; 
      } 
     } 
    }); 
    var currentZIndex = this.uiDialog.css('z-index'); 

    var moved; 
    if (currentZIndex >= heighestZIndex) { 
     moved = false; 
    } else { 
     this.uiDialog.css('z-index', heighestZIndex + 1); 
     moved = true; 
    } 

    if (moved && !silent) { 
     this._trigger("focus", event); 
    } 

    return moved; 
}, 
+0

謝謝,歐姆裏 - 我將在週一重新開始工作時試試。 –

+0

爵士,這工作得很好,我想請你喝一杯,但是這可能不太可能發生。請接受100個電子積分。 –

+0

@Grim ...大聲笑,很高興它解決了隊友。 –

3

看起來這是jQuery UI 1.10中的一個bug,報告爲here。在你的小提琴中,如果你將jquery更改爲1.9.1,將jquery ui更改爲1.9.2,它就可以工作。根據錯誤報告,它也在1.11中被修復。

+0

謝謝賈裏德 - 我到處搜尋,但沒顯然,不要使用正確的單詞組合! –