2009-11-18 8 views
0

J'ai une fonction qui me permet de sélectionner un élément lorsque son cliqué. Il va comme ceci:élément Évitez d'être sélectionné lorsque sa chute avec jQuery triables

$('ul.grid li').click(function() { 
    var input = $(this).find('input.select-state:first'); 
    var value = input.attr('value'); 
    if (value == '0') { 
     $(this).addClass('active'); 
     input.attr('value', '1'); 
    } else { 
     $(this).removeClass('active'); 
     input.attr('value', '0'); 
    } 
}); 

Quand j'ajoute jQuery sortable à cela, l'élément qui DROPpé est sélectionné immédiatement lorsque je laisse tomber parce que cette fonction fonctionne. Quelle est l'approche pour résoudre ce problème?

Merci!

Répondre

0

Jamais utilisé jQuery Sortable, mais pouvez-vous ajouter appel à .stopImmediatePropagation() à la fonction qui appelle sortable?

+0

Pourquoi vous dites "Ne jamais utiliser jQuery Sortable"? –

+0

oups .. faute de frappe. 's/use/used /' – beggs

0

Vous pouvez définir un indicateur sur l'élément lors du déplacement commence, comme ceci:

$(document).ready(function(){ 
    $('ul.grid').sortable({ 
     start: function(event, ui){ 
      ui.item.data('dragged', true); 
     } 
    }); 
}); 

Ensuite, il suffit de vérifier et retourner le drapeau dans votre fonction de clic, comme ceci:

$('ul.grid li').click(function() { 
    if($(this).data('dragged')){ 
     $(this).data('dragged', false); 
    } else { 
     var input = $(this).find('input.select-state:first'); 
     var value = input.attr('value'); 
     if (value == '0') { 
      $(this).addClass('active'); 
      input.attr('value', '1'); 
     } else { 
      $(this).removeClass('active'); 
      input.attr('value', '0'); 
     } 
    } 
});