2011-05-02 8 views
10

¿hay alguna manera de definir eso, solo se puede seleccionar un elemento con el widget jquery.selectable?Jquery UI SELECTABLE, ¿cómo seleccionar un solo artículo?

O tengo que implementar un workarround capturando eventos y manipulando por mi cuenta lo que sucede?

+0

¿Quieres anular la selección de un elemento seleccionado previamente? ¿O evitar la selección de un segundo artículo? –

+0

lo que pretendo es obtener solo un elemento seleccionado como un "comportamiento desplegable" o un botón de radio. –

Respuesta

9
$("#myList li").click(function() { 
    $(this).addClass("selected").siblings().removeClass("selected"); 
}); 
+2

'selected' debe ser' ui-selected' – theblang

+0

Además, esto no maneja el caso de selección del mouse. – theblang

18

Expandí la respuesta de Nirmal para limitar el caso de selección del mouse. Además, creo que es más limpio utilizar la opción selected en lugar de un controlador de eventos completamente independiente.

$("#selectable").selectable({ 
    selected: function(event, ui) { 
     $(ui.selected).addClass("ui-selected").siblings().removeClass("ui-selected");   
    }     
}); 

Queda un pequeño problema. Al seleccionar múltiples elementos con el mouse, siempre se seleccionará el último elemento. Esto se debe a que la función pasada a la opción selected se ejecuta para cada elemento seleccionado, que supongo va en el orden del artículo. Idealmente, se seleccionará el elemento al que aterriza el cursor del mouse. No solucioné esto porque principalmente quería una restricción de selección múltiple al usar el mouse.

+0

+1 Esto funciona muy bien. (En mi caso particular los artículos no tienen descendientes) – Matt

6

Mejoro un poco la respuesta de mattblang. Los hermanos pueden tener también descendientes, por lo que la respuesta más general es:

$("#selectable").selectable({ 
    selected: function(event, ui) { 
     $(ui.selected).addClass("ui-selected").siblings().removeClass("ui-selected").each(
      function(key,value){ 
       $(value).find('*').removeClass("ui-selected"); 
      } 
     ); 
    } 
}); 
+0

eso es mejor ... mejor respuesta –

Cuestiones relacionadas