Показать сообщение отдельно
  #2 (permalink)  
Старый 23.08.2019, 14:20
Профессор
Отправить личное сообщение для demoniqus Посмотреть профиль Найти все сообщения от demoniqus
 
Регистрация: 28.05.2008
Сообщений: 181

У тебя тема не соответствует телу вопроса.

let src = $('.scroll');
let currentSrc;
src.mousedown(function(e){
  currentSrc = e.targetEvent;
});
src.mouseup(function(e){
  if (e.targetEvent !== currentSrc) {
     e.preventDefault ? e.preventDefault() : e.cancelBubble = true;
     return false;
  }
})


Если объекты, на которых возникли mouseDown и mouseUp отличаются, то нужно погасить событие mouseUp. Тогда не должен возникнуть click по ссылке. Также вообще-то следует предусмотреть выход курсора за пределы окна - в таком случае события mouseUp может не возникнуть и не выполнится проверка, останавливающая развитие события. Стоит довесить mouseout...

Кроме того, ЗАРУБИ на носу, иначе когда-нибудь потеряешь мозг - jQuery не устанавливает обработчик, а добавляет его в очередь. Поэтому конструкция, когда ты внутри mouseDown делаешь src.mouseMove(function (){}) приведет к тому, что у тебя по мере последующих mouseDown на элементе будет расти количество одинаковых обработчиков. Поверь, ничего хорошего это не сулит...

Кстати, я не уверен что mouseup стоило вешать на window в твоем случае. Уж скорее на body.
Ответить с цитированием