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/
【讨论】:
您需要考虑滚动。 感谢指正,clientX
和clientY
可能更合适。以上是关于js移除onmousemove属性?的主要内容,如果未能解决你的问题,请参考以下文章