2012-02-26 34 views
6

Tôi đã viết một cửa sổ bật lên có lớp phủ (không khác với các trình hiển thị hình ảnh thông thường) nơi người dùng nhấp và lớp phủ bao gồm màn hình tìm nạp hình ảnh lớn để hiển thị.jquery remove() nhảy lên đầu trang

Vấn đề là khi người dùng nhấp vào 'đóng' chức năng của tôi sẽ biến mất hình ảnh và lớp phủ, sau đó xóa chúng. Khi tôi gọi hàm .remove(), trình duyệt sẽ tập trung vào thẻ body và cuộn lên đầu trang.

Tôi đã thử làm việc xung quanh bằng cách chụp offset.top đồng và lưu trữ chúng trong thuộc tính trên phần tử người dùng nhấp vào và khi cửa sổ bật lên được đóng và sau. Chức năng remove() đã được gọi, tôi sử dụng chức năng scrollTo() để trả lại vị trí cuộn chính xác (vì lý do nào đó vượt quá và cuộn phần tử lên trên cùng).

/*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'); 

} 

Tại sao chức năng .remove() làm cho bước nhảy trở lại đầu trang? Ngay cả với các scrollTo làm việc xung quanh nó trông cẩu thả như những thứ mờ đi, nhưng nhảy lên đến đỉnh của màn hình và sau đó quay trở lại các yếu tố trong câu hỏi.

Trả lời

Các vấn đề liên quan