jQuery mouseup在拖离链接后未启动

jQuery mouseup not firing after drag off link

本文关键字:启动 链接 mouseup jQuery      更新时间:2023-09-26

查看此jsfiddle:

http://jsfiddle.net/CB87X/6/

单击并按住该按钮,拖动该按钮并释放。如您所见,如果释放鼠标按钮时鼠标未在元素上,则mouseup事件永远不会触发。因此,我的示例中的样式从未更改回原来的样式。如果鼠标按钮未在单击的元素上时释放,如何激发mouseup事件?

Edit1:BTW我在这个网站上看了几个解决方案,实现了它们,但mouseup事件仍然没有启动。

mouseup事件与指针所在的位置有关,这是预期的行为。如果希望按钮的样式正确,请同时绑定mouseleave事件。

这样就可以了。如果左键单击按钮(.but)并拖动,则可以在页面上的任何位置mouseup,并且仍然触发单击事件。如果mouseleave页面"正文"和mouseup,则bind ed mouseleave事件为unbind ed

$('.but').mousedown( function(e) {
    if (e.which == 1) {
        var $this = $(this);
        $this.bind('mouseleave', function(){
            $('body').one('mouseup', function() {
                $this.click();
            });
        });
        $this.mouseup(function() {
            $(this).unbind('mouseleave');
        });
    }
});

分叉您的示例以提供一个工作示例:

http://jsfiddle.net/67Rrs/2/

一旦按钮被mousedowned,一个事件就会绑定到下一个mouseup,无论它发生在哪里,都会重置样式。

只需使用$(document).on('museup-dragend',somefunc);