2012-03-01 11 views
5

Probé muchas cosas pero no tuve éxito :(Tengo dos listas ordenables conectadas entre sí. La cosa es la lista 'A' puede aceptar cualquier elemento de la lista. Pero lista 'B' sólo puede aceptar un elemento que tiene class = 'abc'rechazar elemento ordenable no válido en una lista ordenable

El código es el

<ul id='A'> 
    <li>item A1</i> 
    <li>item A2</i> 
    <li class='abc'>item A3</i> 
</ul> 

<ul id='B'> 
    <li class='abc'>item A1</i> 
</ul> 

El código jQuery que estoy tratando es

$('#A').sortable({revert: true, connectWith: '#B'}) 
$('#B').sortable({revert: true, connectWith: '#A', over: function(event, ui){ 
    if(!ui.item.hasClass('abc')){ 
    ui.placeholder.addClass('ui-state-error'); 
    ui.sender.sortable('cancel'); 
    } 
}}) 

favor, me guía donde estoy equivocado, gracias

Respuesta

4

Usted podría tratar de usar el caso de recibir en su lugar, aunque es un poco retrasado haciendo esto y la addClass no funciona:

$('#A').sortable({revert: true, connectWith: '#B'}) 
$('#B').sortable({revert: true, connectWith: '#A', 
    receive: function(event, ui){ 
     if(!ui.item.hasClass('abc')){ 
      $(ui.placeholder).addClass('ui-state-error');      
      $(ui.sender).sortable('cancel'); 
     }} 
})​;​ 

Ejemplo - http://jsfiddle.net/b5ykK/1/

+0

Wow! increíble :) una cosa más, ¿podemos hacer que la transición de revertir sea suave? vuelve inmediatamente – makki

+0

@makki No se ve así. Podrías publicar eso como otra pregunta y ver si alguien sabe cómo. –

Cuestiones relacionadas