簡體   English   中英

event.preventDefault()不會阻止正常<a>操作</a>

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM