2009-05-20 8 views
14

que tienen un control deslizante define así:¿Cómo configuro el valor del control deslizante de jQuery UI mediante programación y desencadenar eventos?

$("#slider").slider({ 
     orientation: "vertical", 
     range: "min", 
     min: 0, 
     max: totalRows, 
     value: totalRows, 
     slide: function(e, ui) { 
      scrollTheTable(ui.value, totalRows, visibleRows, $table); 
     } 
     }); 

Cuando se utiliza el control deslizante, la función asignada a la diapositiva se llama ningún problema. Tengo una tabla que puede contener o no una fila que tiene una clase de SelectedItem. Estoy trabajando en un método que "desplazará" esa fila a la parte superior de la tabla básicamente en la carga de la página.

La carne del método es similar a esto:

$("#slider").slider('value', $rows.length - index); 

Esta propiedad establece el valor del control deslizante y el deslizador hace correctamente, pero mi manejador de diapositivas nunca es llamado para hacer el trabajo sobre la mesa.

¿Qué me falta aquí?

Respuesta

22

Parece que el parámetro de diapositiva solo es válido para eventos de mouse. Al establecer el valor mediante programación, se activa el evento de cambio. Así que cambiar mi configuración a esto me dio lo que quería.

$("#slider").slider({ 
     orientation: "vertical", 
     range: "min", 
     min: 0, 
     max: totalRows, 
     value: totalRows, 
     slide: function(e, ui) { 
      scrollTheTable(ui.value, totalRows, visibleRows, $table); 
     }, 
     change: function(e, ui) { 
      scrollTheTable(ui.value, totalRows, visibleRows, $table); 
     } 
     }); 
+0

¡Estupendo! Tuve este problema también y esto ayudó. –

+1

¿No llama eso scrollTheTable dos veces cuando se cambia el control deslizante con el mouse? Usar solo el controlador de eventos de cambio me funciona. – xr280xr

0

¿Por qué no llamas esto después de establecer el valor?

scrollTheTable($rows.length - index, totalRows, visibleRows, $table); 
6

Para inicializar el control deslizante, el método anterior con el "slide: function (..." y "cambio: la función (" funciona perfecto, pero para cambiar el cursor después desde fuera, por ejemplo, haciendo clic en una miniatura o ninguna. otro div con un "evento de clic-" que pueden utilizarse:

$("#slider").slider('value', newvalue); 

la pista esencial para mí era la línea de código ligeramente incorrecta ($ filas, PHP??):

$("#slider").slider('value', $rows.length - index); 
0

como indicado en api de jquery: usando s lider ('valor', X) llamará a la función de cambio incorporada. así que una sugerencia es no usar devolución de diapositivas.

0

Estoy usando un control deslizante que tiene 2 asas. Pude actualizarlo programáticamente con este código:

$("#slider-range").slider('values',[57,180]).change(); 
Cuestiones relacionadas