How to detect click but not drag using jQuery? How to detect click but not drag using jQuery? jquery jquery

How to detect click but not drag using jQuery?


Similar to this: Can you detect "dragging" in jQuery?

You can use mousedown and mouseup to detect whether there was a drag.

 $(function() {    var isDragging = false;    $(".conteiner")    .mousedown(function() {        $(window).mousemove(function() {            isDragging = true;            $(window).unbind("mousemove");        });    })    .mouseup(function() {        var wasDragging = isDragging;        isDragging = false;        $(window).unbind("mousemove");        if (!wasDragging) {            $(this).selection();        }    });  });

Here is the plunker demo:http://embed.plnkr.co/Y7mrOP/


Found better way, since I need to detect drag to select text this works better:

var get_selected_text = (function() {    if (window.getSelection || document.getSelection) {        return function() {            var selection = (window.getSelection || document.getSelection)();            if (selection.text) {                return selection.text;            } else {                return selection.toString();            }        };    } else if (document.selection && document.selection.type !== "Control") {        return function() {            return document.selection.createRange().text;        };    }    return function() {        return '';    };})();self.mouseup(function() {    if (get_selected_text() === '') {       // click not drag    }});


Type annotated version of the OP's solution for Closure Compiler in Advanced mode

const get_selected_text = (/** @return {function():string} */ function() {    if (window.getSelection || document.getSelection) {        return function () {            const selection = /** @type {function():Object<string,?>} */ (window.getSelection || document.getSelection)();            if (typeof selection['text'] === "string") {                return selection['text'];            } else {                return selection.toString();            }        };    } else if (document.selection && document.selection.type !== "Control") {        return function () {            return document.selection.createRange().text;        };    }    return function () {        return '';    };})();