Подтвердить что ты не робот

JQuery.click() запускается при выборе/выделения текста

У меня есть <div> с кучей текста. Этот <div> также имеет событие .click(), использующее jQuery.

Проблема, с которой я столкнулась, заключается в том, что .click() запускается при выборе/выделения текста. Даже удерживая мышь в течение нескольких секунд, прежде чем отпускать.

Вот JSFiddle, который показывает проблему: http://jsfiddle.net/ym5JX/

Поведение, которое я ожидаю, заключается в том, что выделение текста не совпадает с нажатием на элемент.

4b9b3361

Ответ 1

Это потому, что a click является mousedown, за которым следует mouseup. Мое предложение - проверить getSelection внутри обработчика click. Если он установлен, вы выбрали что-то, иначе вы просто нажали.

$('#click').click(function() {
    var sel = getSelection().toString();
    if(!sel){
        alert("clicked");
    }
});​

DEMO: http://jsfiddle.net/ym5JX/3/

Ответ 2

Как я написал в комментарии, mosuedown + mouseup = click, что и делает именно это. Существует обходное решение для этого.. см. Ниже,

var isClick = 0;
$('#click').click(function() {
    if (isClick == 1) {
        alert("clicked");
    }
}).mousedown(function () {
    isClick = 1;
}).mousemove(function () {
    isClick = 0;
});

DEMO