Как обнаружить щелчки при использовании перетаскивания YUI? - PullRequest
1 голос
/ 20 ноября 2008

Я использую YUI для добавления поддержки перетаскивания в div. Это также отвечает на щелчки. К сожалению, поведение щелчка вступает в силу даже после операции перетаскивания. Вот фрагмент кода:

// 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);

Клик должен редактировать текст, в то время как перетаскивание должно перемещать тег. Однако происходит событие onclick, поэтому редактирование текста начинается после перемещения тега.

Я мог бы обойти проблему, но есть ли более прямой способ YUI отличить простой щелчок от перетаскивания?

1 Ответ

2 голосов
/ 20 ноября 2008

Michael

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

Просмотрите исходный код и дайте мне знать (ericmiraglia at yahoo dot com), если у вас есть дополнительные вопросы по этому вопросу.

Модификация. Я скопирую код здесь, таким образом, если этот парень снимет код со своего сервера, люди смогут проверить источник.

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");
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...