[英]event.preventDefault() not preventing normal <a> action
我正在為我的div制作Dragscroller。 拖動有效,但是我拖動的div里面有一些<a>
標記。 當我在與<a>
標記(或鏈接)相同的位置抓住div時,它仍將我重定向到鏈接的頁面。
我正在使用這些代碼來防止它們在爭奪之后重定向:
//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;
}
}
}
嘗試將另一個處理程序附加到檢查變量的所有標簽上,如果變量為true,則返回。 名稱變量拖動。 將鼠標懸停設置為false。
問題是事件向內傳播,因此,如果在容器上設置了preventDefault,則事件將不會傳遞給它的父對象,也不會影響子對象,因為它們是將事件傳遞給它的子對象
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.