提问者:小点点

Mouseup事件不是用函数内部的代码激发的


我正在尝试创建Press和amp; 使用jQuery按住确认按钮。 问题是当我在这个函数中插入代码时,mouseup事件没有触发。 它仅在函数为空且只有console.log时激发。 下面是一个例子:

self.on('mousedown touchstart', function(e) {
    e.preventDefault();
    self.addClass('-loading -progress');
    clickDuration = setTimeout(function(e) {
        self.trigger('click').removeClass('-progress');
        console.log('clicked for 2 seconds');
    }, parseInt(confirmDuration));
    console.log(e);
}).on('mouseup touchend', function(e) {
    self.removeClass('-loading -progress');
    clearTimeout(clickDuration);
    console.log(e);
});

mouseup不会触发。

self.on('mousedown touchstart', function(e) {
    e.preventDefault();
    console.log(e);
}).on('mouseup touchend', function(e) {
    console.log(e);
});

mouseup将触发。

无论如何,我已经创建了我的代码的完整示例,您可以在这里实时使用它:https://jsbin.com/bozusiboku/1/edit?jsoutput

谢啦!


共1个答案

匿名用户

如果从语句self.addClass(“-loadd-progress”);中删除类-loadding,则代码可以正常工作。

-loading添加CSS指针-events:none,该指针禁用按钮上的鼠标事件,并防止mouseup触发。

请参见:mdn:指针事件。