2008-11-20 3 views
1

J'utilise YUI pour ajouter un support de glisser-déposer à un div. Il répond également aux clics. Malheureusement, le comportement du clic prend effet même après une opération de glisser-déposer. Voici un extrait de code:Comment puis-je détecter les clics lors de l'utilisation de glisser-déposer YUI?

// Create a DOM object for the group tag. 
div = document.createElement('div'); 
div.className = 'group'; 
div.onclick = function() { beginEditName(); } 
container.appendChild(div); 

// Enable drag/drop for the group tag. 
dragdrop = new YAHOO.util.DD(div); 
dragdrop.scroll = false; 
dragdrop.on('dragEvent', function(ev) { onDrag(ev); }); 
dragdrop.on('endDragEvent', function(ev) { onEndDrag(ev); }); 
dragdrop.setXConstraint(0,0); 

Cliquez est censé modifier le texte, alors que la chute de traînée est censé déplacer la balise. Toutefois, l'événement onclick se déclenche afin que l'édition de texte commence après le déplacement de la balise.

Je pourrais coder autour du problème, mais y a-t-il une façon plus directe de différencier un simple clic d'une goutte de glisser?

Répondre

2

Michael,

http://ericmiraglia.com/yui/demos/ddclick.php

Voir la source, et laissez-moi savoir (ericmiraglia yahoo dot com) si vous avez d'autres questions à ce sujet.

Modification. Je vais copier le code ici, de cette façon si ce gars enlève le code de son serveur, les gens pourront vérifier la source.

var beingDragged = false; 
var dd = new YAHOO.util.DD("drag"); 

dd.subscribe("mouseDownEvent", function(e){ 
    beingDragged = false; 
}); 
dd.subscribe("startDragEvent", function(e) { 
    beingDragged = true; 
}); 
dd.subscribe("mouseUpEvent", function(e) { 
    if(beingDragged) { 
     alert("dragged") 
    } else { 
     alert("clicked"); 
    } 
}) 
Questions connexes