2012-02-26 16 views
6

He escrito una ventana emergente con una superposición (no muy diferente de los visualizadores de imagen habituales) donde el usuario hace clic y una superposición cubre la pantalla que muestra la imagen completa para mostrar.jquery remove() salta a la parte superior de la página

El problema es que cuando el usuario hace clic en 'cerrar' mi función se desvanece y la superposición se elimina. Cuando llamo a la función .remove(), el navegador se enfoca en la etiqueta del cuerpo y se desplaza a la parte superior de la página.

He intentado solucionar los problemas al capturar los offset.top co-ords y almacenarlos en un atributo en el elemento en el que el usuario hace clic, y cuando el elemento emergente se cierra y después de. Se ha llamado a la función remove(). Utilizo la función scrollTo() para devolver la posición de desplazamiento correcta (que por alguna razón sobrepasa y desplaza el elemento hacia la parte superior).

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

} 

¿Por qué es la función .remove() causando el salto de nuevo a la parte superior de la página? Incluso con el scrollTo funciona, se ve descuidado cuando la materia se desvanece, pero salta a la parte superior de la pantalla y luego vuelve al elemento en cuestión.

Respuesta

Cuestiones relacionadas