2012-02-26 84 views
6

我已經寫了一個帶有覆蓋層(與通常的圖片顯示器不相似)的彈出窗口,用戶單擊該覆蓋層並覆蓋了獲取大圖片以進行顯示的屏幕。jquery remove()跳回到頁面頂部

問題是,當用戶點擊'關閉'我的功能淡出圖片和覆蓋,然後刪除它們。當我打電話給.remove()功能時,瀏覽器然後將焦點放在body標籤上並滾動到頁面的頂部。

我試圖通過捕獲offset.top co-ords並將它們存儲在用戶點擊的元素的屬性上,以及彈出窗口關閉時和之後。 remove()函數已被調用,我使用scrollTo()函數返回正確的滾動位置(出於某種原因超調並將元素滾動到頂部)。

/*creating the popup layer and picture*/ 
function newsPopup(obj){ 

    /***PART ZERO - get the timestamp value of this ***/ 
    var itemID = $(obj).attr('itemID'); 
    var storyNumber = $(obj).attr('storyNumber'); 

    /*adding the identifier for later*/ 
    var offset = $(obj).offset(); 
    var roundedOff = Math.round(offset.top); 
    $(obj).attr('scrollMeBack', roundedOff); 

    /*** the script then continues to create an overlay and picture popup 
} 

/*function to remove popup*/ 
function overlayRemove(){ 
    //first fade out the cover and the container 
    $("#NEWS_overlay").fadeOut(); 
    $("#NEWS_centeringContainer").fadeOut(); 

    //then remove it from the page completely 
    setTimeout('$("#NEWS_overlay").remove();$("#NEWS_centeringContainer").remove();',400); 


    /*value to scroll the element back to*/ 
    var scrollBack = $('[SpringCMSscrollMeBack]').attr('SpringCMSscrollMeBack'); 
    setTimeout('$(window).scrollTop('+scrollBack+')',401); /*notes the 1 millisecond delay here to mean the scroll ahppen after the item has been removed.*/ 
    $('[scrollMeBack]').removeAttr('scrollMeBack'); 

} 

爲什麼.remove()功能造成跳回到頁面頂部?即使在scrollTo左右工作,它看起來馬虎,因爲東西淡出,但跳轉到屏幕的頂部,然後回到有問題的元素。

回答