JQuery mousemove未重新启动
JQuery mousemove not restarting
我遇到的问题是$('.someclass').on('mousemove', function() { do something });
。因此,当我将鼠标悬停在一个按钮上时,它会动态地添加一个将跟随鼠标的元素,一旦我的计数器达到500,这个新元素就会被删除。这一切都很好,但当鼠标悬停在按钮上时,第二次就不起作用了。下面是一个代码示例。
每次鼠标悬停在按钮上时,都应该添加一个新的动态元素,然后在设定的鼠标移动量后删除,但第二次悬停时就不起作用了。
$('.someClass').on('mouseover' function() {
$('.element').appendTo('body');
$('body').on('mousemove', function(e) {
var mousex = e.pageX + 20;
var mousey = e.pageY;
$('.element').css({ top: mousey, left: mousex, position: 'absolute' });
if (mouse_move >= 500) {
('.element').remove();
}
mouse_move++;
});
});
这里有一个快速示例。不确定这是否是你想要的,但我仍然支持上面的评论。我不认为你每次都在mouseover上重新创建那个元素。
Fiddle:http://jsfiddle.net/AtheistP3ace/6k70v3x3/
JS:
$('.someClass').on('mouseover', function () {
doStuff();
});
function doStuff() {
$('.someClass').off('mouseover');
$('<div class="element"></div>').appendTo('body');
var mouse_move = 0;
$('body').on('mousemove', function (e) {
var mousex = e.pageX + 20;
var mousey = e.pageY;
$('.element').css({
top: mousey,
left: mousex,
position: 'absolute'
});
if (mouse_move >= 500) {
alert('removed');
$('.element').remove();
$('body').off('mousemove');
$('.someClass').on('mouseover', function () {
doStuff();
});
}
mouse_move++;
});
}
HTML:
<div class="someClass"></div>
CSS:
.someClass {
width: 100%;
height: 500px;
background: red;
}
.element {
height: 50px;
width: 50px;
background: yellow;
}
来自文档:
$( selector ).hover( handlerIn, handlerOut )
handlerIn
:鼠标指针进入元素时执行的函数。
handlerOut
:鼠标指针离开元素时执行的函数。
示例:
$('p').hover(function () {
$(this).css('color', '#f00')
}, function () {
$(this).css('color', '#000')
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Hover me</p>
你可以按照我的例子来编辑你的js代码。
希望这对你有所帮助。
我不知道在哪里定义或重置了变量"mouse_move"
尝试:
$('.someClass').on('mouseover' function() {
var mouse_move = 0;
...
});
Typo:我想这只是remove()
语句中缺少$
符号的错误。
重置计数器并移除鼠标移动
以下是工作示例:https://jsfiddle.net/uLo91hqb/3/
应该是这样的:
mouse_move = 0;
$('.someClass').on('mouseover', function () {
$('.element').appendTo('body');
// Show the counter again
// Purpose for >=0 is for fast mousemovement sometime 0 may not been recorded
// It it quickly counts 3-4 .. You can see it in fiddle
if (mouse_move >= 0)
$('.element').show();
$('body').on('mousemove', function (e) {
var mousex = e.pageX + 20;
var mousey = e.pageY;
$('.element').css({
top: mousey,
left: mousex,
position: 'absolute'
});
if (mouse_move >= 500) {
// Remove mousemove from the body
$('body').off('mousemove');
// Reset counter
mouse_move = 0;
$('.element').hide();
}
mouse_move++;
$('.counter').html(mouse_move);
});
});
相关文章:
- 当我在重新启动cordova应用程序后尝试添加更多数据时,lokijs会丢失数据库和收集中的数据
- 重新启动jquery脚本后,角度停止工作
- Chrome内容脚本制作cookie;chrome重新启动时,cookie会被删除.如何使其稳定
- preventDefault之后的重新启动事件
- WebStorm,使用Node Supervisor(因此不必在每次代码更改后重新启动)
- 重新启动游戏jQuery功能不工作
- Web服务器意外退出,正在重新启动新实例
- 在变量中保存值的最佳方法是在应用程序关闭后使用,然后使用apachecordova在android中重新启动
- 重新启动画布 JavaScript
- 事件侦听器,用于完全关闭后重新启动的应用程序
- Node SocketIO以编程方式强制在损坏的套接字上重新启动
- 服务器重新启动后javascript不工作
- 当滚动到指定的位置时,启动功能,如何重置它并重新启动,如果我们再次回到这个位置
- Gulp Concat+Browsesync重新启动
- 在 javaScript 中重新启动 setInterval
- 如何为Sails.js创建启动/停止/重新启动Linux服务
- 如何暂停和重新启动jquery数据表插件
- 如何创建一个onclick函数,该函数在按下重新启动按钮时被调用
- 在第一次安装扩展时,使用Javascript重新启动Google Chrome
- JQuery mousemove未重新启动