Javascript 创建触发第二个事件的事件
我正在尝试创建一个jQuery事件来触发第二个事件。第一个事件是单击表示图像的表情符号id。第二个是mousemove事件,它在页面上移动图像。当鼠标再次单击页面主体中的任何位置并将图像放置在该绝对位置时,第三个事件停止此事件。我能够让第二个和第三个事件起作用,但我无法让第一个事件与第二个事件起作用。以下是迄今为止我对jQuery的了解:Javascript 创建触发第二个事件的事件,javascript,jquery,events,Javascript,Jquery,Events,我正在尝试创建一个jQuery事件来触发第二个事件。第一个事件是单击表示图像的表情符号id。第二个是mousemove事件,它在页面上移动图像。当鼠标再次单击页面主体中的任何位置并将图像放置在该绝对位置时,第三个事件停止此事件。我能够让第二个和第三个事件起作用,但我无法让第一个事件与第二个事件起作用。以下是迄今为止我对jQuery的了解: var mouseTracker = function(event) { console.log(event.pageX, event.pageY, !!e
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);
});
在点击表情符号的过程中,也会触发身体的点击。
这将导致调用stop()
。将该事件传播到正文
可以被event.stopPropagation()
(或从begin()
返回的等效返回值false
)阻止。即使在begin()
中附加了body
点击处理程序,也应手动停止传播
您可能希望一次性使用某些事件。这可以通过使用.one()
进行绑定来实现。在这种情况下,处理程序在首次使用后分离,无需手动.off()
:
它无法工作,因为附加的正文处理程序会立即被触发。我可能错了——但如果将函数引用传递给事件对象,它为什么会被触发?事件会从
#emoji
传播到正文
。从#emoji
单击处理程序存在后,事件将传播到停止()
,因为它已附加。
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);