2010-08-15 17 views
4

J'ai un problème avec jQuqeryUI. Je voudrais exécuter du code chaque fois qu'un élément est déplacé et déposé sur une cible invalide. Pour autant que je puisse voir, il n'y a pas d'événement prédéfini pour cela, mais j'ai pensé à combiner les informations des événements suivants: over, out, remove et stop, pour y parvenir. Cependant, cela pourrait sembler être un gâchis, y a-t-il un moyen plus propre de le faire?jQueryUI triable, événement de retour chariot

Répondre

7

Vous pouvez passer une méthode à la revert option ainsi, par exemple, si nous prenons la démo par exemple comme ceci:

<div id="draggable" class="ui-widget-content"> 
    <p>I revert when I'm not dropped</p> 
</div> 
<div id="droppable" class="ui-widget-header"> 
    <p>Drop me here</p> 
</div>​ 

ensuite sur votre draggable vous pouvez calculer si vous souhaitez revenir, comme ceci:

$("#draggable").draggable({ 
    revert: function(dropped) { 
     var dropped = dropped && dropped[0].id == "droppable"; 
     if(!dropped) alert("I'm reverting, what a cruel world!"); 
     return !dropped; 
    } 
}); 

You can give it a try here, le paramètre dropped transmis est l'élément auquel il a été larguée sur c'est un .droppable(), il est juste false si elle a atterri nulle part ailleurs.

Ou si vous utilisez le accept option vous pouvez calculer ce, comme ceci:

var dropped = dropped && $(this).is(dropped.droppable('option', 'accept')); 

Il utilise le sélecteur accepte et utilise .is() pour voir si les matchs largables.

You can view a demo of that here.

+0

Salut merci pour cela, c'était exactement ce que je cherchais. C'est une belle fonctionnalité non documentée;) – thetrompf

+0

@thetrompf - bienvenue :) –

+0

Juste par curiosité - où avez-vous trouvé cela? Je ne trouve rien de tout cela dans le manuel. – kastermester

Questions connexes