Нажав или дважды щелкнув перетаскиваемый элемент с помощью jQuery? - PullRequest
0 голосов
/ 27 февраля 2012

Я хотел бы иметь возможность щелкнуть или дважды щелкнуть элемент, который также можно перетаскивать. Как это может быть сделано? Я пробовал различные методы click (), dblclick () и другие, но пока ни один из них не работал.

В настоящее время у меня есть неуклюжий обходной путь, сравнивающий миллисекунды между событиями mouseup и mousedown, но для этого все же требуется, чтобы элемент был перемещен хотя бы на один пиксель.

Я хочу иметь возможность щелкать по нему как кнопка, без необходимости перетаскивать его.

Ответы [ 3 ]

1 голос
/ 27 февраля 2012

Вы можете использовать небольшую задержку, чтобы предотвратить случайное перетаскивание, просто щелкнув.

$('.draggable').draggable({ delay: 200 });
0 голосов
/ 14 февраля 2015

Ни одно из двух других решений не сработало для меня, сработало следующее:

$('#draggableDiv').mousedown(function () {
    var thisone=$(this);
    setTimeout(function(){
        thisone.attr("draggable","true");   
    },200);
});
0 голосов
/ 27 февраля 2012

Предполагая, что вы не против иметь дочерний элемент, чтобы получать щелчки перетаскиваемого внешнего элемента, тогда можно использовать этот подход:

$('#draggableDiv').draggable(
   {
       cancel : 'a'
   });

JS Fiddle demo .

Параметр cancel использует селектор CSS / jQuery, чтобы определить, какие элементы не должны рассматриваться как триггеры для события перетаскивания.

<ч />

Отредактировано с учетом того факта, что, по крайней мере, в Chromium 16 / Ubuntu 11.04 элемент выглядит как , чтобы быть активным для двойного щелчка и можно перетаскивать все одновременно: Пример JS Fiddle .

...