JQuery.click() запускается при выборе/выделения текста
У меня есть <div>
с кучей текста. Этот <div>
также имеет событие .click()
, использующее jQuery.
Проблема, с которой я столкнулась, заключается в том, что .click()
запускается при выборе/выделения текста. Даже удерживая мышь в течение нескольких секунд, прежде чем отпускать.
Вот JSFiddle, который показывает проблему: http://jsfiddle.net/ym5JX/
Поведение, которое я ожидаю, заключается в том, что выделение текста не совпадает с нажатием на элемент.
Ответы
Ответ 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
Ответ 3
jsFiddle: http://jsfiddle.net/ym5JX/8/
$('#click').click( function()
{
if ( getSelection() == "" )
{
alert("clicked");
}
});