Я делаю dragscroller для своего div. Драйвер работает, но div, который я перетаскиваю, содержит около <a>
тегов внутри. Когда я захватываю div в том же положении, что и тег <a>
(или ссылка), он перенаправляет меня на связанную страницу.event.preventDefault() не препятствует нормальному <a> action
Я использую эти коды, чтобы предотвратить их перенаправление после захвата:
//Inside the mouseMoveHandler
if(delta!=0){
prevent=1;
}
//Inside the mouseUpHandler
if(prevent){
alert('at this point he should prevent clicking on a link, but he does not');
prevent=0;
event.preventDefault();
return false;
}
Оповещение появляется на экране, но, кажется, не работают event.preventDefault();
и return false;
.
Я также пробовал event.stopPropagation()
, чтобы остановить ссылку по умолчанию, чтобы она не возникала.
Фрагменты кода выше, также может быть найдено в полном коде ниже:
var dragscroll= {
mouseDownHandler : function(event) { // mousedown, left click
// Initial coordinates will be the last when dragging
event.data.lastCoord = event.clientY;
$.event.add(document, "mouseup", dragscroll.mouseUpHandler, event.data);
$.event.add(document, "mousemove", dragscroll.mouseMoveHandler, event.data);
},
mouseMoveHandler : function(event) { // User is dragging
// How much did the mouse move?
delta = event.clientY - event.data.lastCoord;
// Set the scroll position relative to what ever the scroll is now
event.data.scrollable.scrollTop(event.data.scrollable.scrollTop() - delta);
// Save where the cursor is
event.data.lastCoord=event.clientY
if(delta!=0){
prevent=1;
}
},
mouseUpHandler : function(event) { // Stop scrolling
$.event.remove(document, "mousemove", dragscroll.mouseMoveHandler);
$.event.remove(document, "mouseup", dragscroll.mouseUpHandler);
if(prevent){
alert('at this point he should prevent clicking on a link');
prevent=0;
event.preventDefault();
return false;
}
}
}