创建触发第二个事件的事件
Creating an event that triggers a second event
我正在尝试创建一个触发第二个事件的jQuery事件。第一件事是点击指向图片的表情符号id。第二个是鼠标移动事件,它在页面上移动图像。当鼠标再次单击页面主体的任何位置并将图像放置在该绝对位置时,第三个事件将停止此事件。我能够让第二个和第三个事件工作,但我不能让第一个事件与第二个一起工作。以下是目前为止我为jQuery编写的内容:
var mouseTracker = function(event) {
console.log(event.pageX, event.pageY, !!event.which)
$('#emoji').css('top', event.pageY);
$('#emoji').css('bottom', event.pageY);
$('#emoji').css('left', event.pageX);
$('#emoji').css('right', event.pageX);
}
var begin = function() {
$('body').on('mousemove', mouseTracker);
$('body').css('cursor', 'none');
}
var stop = function() {
$('body').off('mousemove', mouseTracker);
$('#emoji').css('postion', 'absolute')
$('body').css('cursor', 'default');
}
$('#emoji').on('click', begin);
$('body').on('click', stop);`
在第一个事件调用中初始化事件。
$('#emoji').on('click', function() {
begin();
$('body').on('click', stop);
});
在点击#emoji
的过程中,body click even也被触发。这导致调用stop()
。该事件向body
的传播可以被event.stopPropagation()
阻止(或等价地从begin()
返回false
)。即使在begin()
中附加了body
on click处理程序,也应该手动停止传播。
您可能希望一次性使用某些事件。这可以通过使用.one()
进行绑定来实现。在这种情况下,处理程序在第一次使用后被分离,没有手动.off()
:
var begin = function (event) {
$('body').on('mousemove', mouseTracker);
$('body').one('click', stop);
$('body').css('cursor', 'none');
return false; // event.stopPropagation();
}
var stop = function () {
$('#emoji').one('click', begin);
$('body').off('mousemove', mouseTracker);
$('#emoji').css('postion', 'absolute')
$('body').css('cursor', 'default');
}
$('#emoji').one('click', begin);
相关文章:
- 关闭第二个事件源上的第一个事件源's onopen方法
- 第二个事件[onClick]不起作用
- 第一个jquery事件正在发生,但没有发生第二个事件
- Vanilla Js:在一个事件中开始一段时间的循环,然后用第二个事件打破它?('mouseover'启
- jQuery函数:为什么第一个事件的完成延迟到第二个事件完成
- socket.io 中的第二个 io.connection() 不会触发连接事件
- 单用户操作触发两个事件-第二个事件不触发't触发器
- 单击角度表元素上的事件,将其定向到由所选元素的 ID 组成的第二个 URL
- 第二个道场 筛选选择控件 onChange 事件不会被触发
- 下拉列表更改事件直到第二个实例才触发
- jQuery脚本仅在第二个事件上执行
- 引导选项卡显示事件仅在第一次触发,而不会在第二个或以后的选项卡开关上触发
- 点击事件只适用于第二个帖子
- Return false对第二个onclick切换事件无效
- Jquery pageX和screenX在第二个监视器上的事件为负数
- 第一个下拉隐藏在第二个下拉点击事件上
- javascript:注册第二个事件侦听器.如何防止某些事件发生
- HIghcharts,在 Point.select 事件中选择第二个点
- 创建触发第二个事件的事件
- jQuery在第二个悬停事件