js移除onmousemove属性?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js移除onmousemove属性?相关的知识,希望对你有一定的参考价值。

如题,我有一个div,有onmousemove方法,在某个情况后想删除这个属性,请注意,不是替换成空,而是完全的删除,求解!

event代表事件的状态,例如触发event对象的元素、鼠标的位置及状态、按下的键等等。
event对象只在事件发生的过程中才有效。
event的某些属性只对特定的事件有意义。比如,fromElement 和 toElement 属性只对 onmouseover 和 onmouseout 事件有意义。
例子
下面的例子检查鼠标是否在链接上单击,并且,如果shift键被按下,就取消链接的跳转。
<html>
<HEAD><TITLE>Cancels Links</TITLE>
<SCRIPT LANGUAGE="JScript">
function cancelLink()
if (window.event.srcElement.tagName == "A" && window.event.shiftKey)
window.event.returnValue = false;

</SCRIPT>
<BODY οnclick="cancelLink()">
下面的例子在状态栏上显示鼠标的当前位置。
<BODY οnmοusemοve="window.status = 'X=' + window.event.x + ' Y=' + window.event.y">
属性:
altKey, button, cancelBubble, clientX, clientY, ctrlKey, fromElement, keyCode, offsetX, offsetY, propertyName, returnValue, screenX, screenY, shiftKey, srcElement, srcFilter, toElement, type, x, y
--------------------------------------------------------------------------------
1.altKey
描述:
检查alt键的状态。
语法:
event.altKey
可能的值:
当alt键按下时,值为 TRUE ,否则为 FALSE 。只读。
2.button
描述:
检查按下的鼠标键。
语法:
event.button
可能的值:
0 没按键
1 按左键
2 按右键
3 按左右键
4 按中间键
5 按左键和中间键
6 按右键和中间键
7 按所有的键
这个属性仅用于onmousedown, onmouseup, 和 onmousemove 事件。对其他事件,不管鼠标状态如何,都返回 0(比如onclick)。
3.cancelBubble
描述:
检测是否接受上层元素的事件的控制。
语法:
event.cancelBubble[ = cancelBubble]
可能的值:
这是一个可读写的布尔值:
TRUE 不被上层原素的事件控制。
FALSE 允许被上层元素的事件控制。这是默认值。
参考技术A var div = doucment.getElementById('xxx'); //先取得这个DOM
delete div.onmousemove;

不过说实话,一般都是通过div.onmousermove = null 来进行事件解除的
参考技术B 您好!我的答案是:通过DIV+CSS+HTML语言编辑
原代码:<div class="div1" onmousemove="属性值"></div>

JS:$(".div1").removeAttr("onmousemove");结果:

触发JS之后的代码:<div class="div1" ></div>
回答完毕,谢谢!忘采纳。。
参考技术C 原代码:<div class="div1" onmousemove="***"></div>

JS:$(".div1").removeAttr("onmousemove");结果:

触发JS之后的代码:<div class="div1" ></div>

忘采纳!谢谢!本回答被提问者采纳
参考技术D 原代码:<div class="div1" onmousemove="***"></div>

JS:$(".div1").removeAttr("onmousemove");结果:

触发JS之后的代码:<div class="div1" ></div>

忘采纳!谢谢!

如何确定 onmousemove 事件的方向?

【中文标题】如何确定 onmousemove 事件的方向?【英文标题】:How to determine the direction on onmousemove event? 【发布时间】:2012-02-21 06:52:48 【问题描述】:

例如,在某些情况下,我想在鼠标按下时取消 onmousemove 事件。是否可以确定onmousemove 事件的方向? jQ或者JS都可以。

我有拖放元素。用户向上拖动元素。例如,如果元素的底部到达文档中的某个位置(即从文档顶部到500px),onmousemove 就会停止。如果用户尝试再次向上拖动元素,该功能将不会启动。此元素只能向下拖动。所以我认为通过捕捉mousemove 事件的方向很容易做到这一点。但是好像没有这样的标准属性。

【问题讨论】:

What have you tried so far?? 还没有。我虽然可能有一些鼠标事件的属性,我在 W3C 规范和 jQ 文档中找不到我自己。如果为此目的没有什么特别之处,我会尝试以不同的方式解决任务。但奇怪的是,它可能是非常有用的标准属性。 【参考方案1】:

event.movementX 是与前一个 positionX 的 px 差异,例如100 代表向右移动 100 像素,-100 代表向左移动等,0 代表没有移动。

【讨论】:

【参考方案2】:

有一些标准属性可以显示与之前的鼠标移动事件相关的增量:

document.addEventListener('mousemove', function (event) 
  directionX = event.movementX || event.mozMovementX || event.webkitMovementX || 0;
  directionY = event.movementY || event.mozMovementY || event.webkitMovementY || 0;
);

就像documentation中所说的:

MouseEvent.movementX 只读属性提供鼠标指针 X 坐标在该事件和前一个 mousemove 事件之间的偏移。

【讨论】:

这很好,但支持列表很小!【参考方案3】:

您可以保存最后一个mousemove 事件的位置以与当前位置进行比较:

//setup a variable to store our last position
var last_position = ,
$output       = $('#output');

//note that `.on()` is new in jQuery 1.7 and is the same as `.bind()` in this case
$(document).on('mousemove', function (event) 

    //check to make sure there is data to compare against
    if (typeof(last_position.x) != 'undefined') 

        //get the change from last position to this position
        var deltaX = last_position.x - event.clientX,
            deltaY = last_position.y - event.clientY;

        //check which direction had the highest amplitude and then figure out direction by checking if the value is greater or less than zero
        if (Math.abs(deltaX) > Math.abs(deltaY) && deltaX > 0) 
            //left
         else if (Math.abs(deltaX) > Math.abs(deltaY) && deltaX < 0) 
            //right
         else if (Math.abs(deltaY) > Math.abs(deltaX) && deltaY > 0) 
            //up
         else if (Math.abs(deltaY) > Math.abs(deltaX) && deltaY < 0) 
            //down
        
    

    //set the new last position to the current for next time
    last_position = 
        x : event.clientX,
        y : event.clientY
    ;
);

这是一个演示:http://jsfiddle.net/Dv29e/

更新

您还可以限制mousemove 事件以更全面地了解鼠标移动到的位置:

var last_position = ,
    $output       = $('#output'),
    mousemove_ok  = true,
    mouse_timer   = setInterval(function () 
        mousemove_ok = true;
    , 500);
$(document).on('mousemove', function (event) 
    if (mousemove_ok) 
        mousemove_ok = false;
        ...
    
);

这只会在以下情况下检查光标的位置与过去的位置:

    最后一个位置存在。 mousemove_ok 变量设置为 true,每半秒执行一次。

这是一个节流演示:http://jsfiddle.net/Dv29e/4/

【讨论】:

您需要考虑滚动。 感谢指正,clientXclientY 可能更合适。

以上是关于js移除onmousemove属性?的主要内容,如果未能解决你的问题,请参考以下文章

JS 拖拽问题

js5

js中onclick定义问题

TypeError:无法读取未定义的 React 类组件的属性“onMouse”

js怎样添加、移除、移动、复制、创建和查找节点?

js放大镜特效