2009-07-20 14 views
27

Actualmente uso jTemplates para crear una tabla bastante grande en el cliente, cada fila tiene un botón que abrirá un diálogo de jQuery UI. Sin embargo, cuando me desplazo hacia abajo y hago clic en uno de esos botones, se abre el cuadro de diálogo de jQuery, pero la posición de desplazamiento se pierde y la página vuelve a la parte superior (con el bloqueo y el cuadro de diálogo real mostrando la pantalla). ¿Alguien ha visto o sabe lo que podría causar este problema?¿Cómo evito que se desplace hacia la parte superior de la página cuando aparece un cuadro de diálogo de la interfaz de usuario jQuery?

Gracias.

+0

Visto esto antes, pero luego he usado el siguiente complemento para asegurar que la posición de desplazamiento no se pierda http://plugins.jquery.com/project/ScrollTo –

Respuesta

66

¿Está utilizando una etiqueta de anclaje para implementar el "botón" que abre el cuadro de diálogo? Si es así, querrá que el manejador de clics que abre el diálogo devuelva falso para que no se invoque la acción predeterminada de la etiqueta de anclaje. Si está utilizando un botón, también deberá asegurarse de que no se envíe (devolviendo el comando falso) y de actualizar completamente la página.

Por ejemplo,

$('a.closeButton').click(function() { 
    $('#dialog').dialog('open'); 
    return false; 
}); 


<a class='closeButton'>Close</a> 
+1

Tuve el mismo problema al usar angularjs y después de desperdiciar algunos horas encontraron que el atributo href debería evitarse al usar [ng-clic] (http://docs.angularjs.org/api/ng.directive:ngClick). – Ritesh

+0

@Ritesh realmente no hay necesidad de hacerlo aquí de todos modos. Lo he eliminado – tvanfosson

+0

bien. Si quita el atributo href, el cursor del mouse no se mostrará y es posible que necesite un poco de estilo. No es un problema en el caso de angularjs, que lo maneja automáticamente. – Ritesh

5

cambio de su código como este

$('a.closeButton').click(function(e) { 
    e.preventDefault(); 
    $('#dialog').dialog('open'); 
}); 
+0

Los uso para cargar contenido a través de ajax y estaba teniendo el mismo problema. Cuando me desplacé por una página y abría un cuadro de diálogo, luego lo cerraba y la página volvía a la parte superior. El plugin scrollTo fue más complicado de lo que necesitaba, lo anterior funcionó perfectamente. –

+0

Spot on! ¡Estaba incumpliendo como enlace! –

-2

Puede probar:

scrollTo(0, jQuery("body")); 
10

Si los botones funcionan con una etiqueta HTML de anclaje con href="#" reemplazar el href, por ejemplo, por href="javascript:;" o cualquier otro método que utilice para desactivar el href. La razón por la que ocurre el desplazamiento es porque href="#" se desplaza a la parte superior de la página.

+0

Este fue mi problema. De hecho, borré el 'href'. ¡Gracias! –

Cuestiones relacionadas