看到这个jsfiddle:
单击并按住按钮,拖出按钮并释放。如您所见,如果释放鼠标按钮时鼠标不在元素上方,则不会触发 mouseup 事件。因此,我的示例中的样式永远不会变回原来的样式。如果鼠标按钮未在单击的元素上方时释放,您如何触发 mouseup 事件?
Edit1:顺便说一句,我在这个站点上查看了几个解决方案,实现了它们,但 mouseup 事件仍然没有触发。
看到这个jsfiddle:
单击并按住按钮,拖出按钮并释放。如您所见,如果释放鼠标按钮时鼠标不在元素上方,则不会触发 mouseup 事件。因此,我的示例中的样式永远不会变回原来的样式。如果鼠标按钮未在单击的元素上方时释放,您如何触发 mouseup 事件?
Edit1:顺便说一句,我在这个站点上查看了几个解决方案,实现了它们,但 mouseup 事件仍然没有触发。
该mouseup
事件与指针所在的位置相关,这是预期的行为。如果您希望您的按钮样式正确,请绑定mouseleave
事件。
这应该可以解决问题。如果您左键单击按钮 (.but) 并拖动,您可以mouseup
在页面上的任何位置触发单击事件。如果您mouseleave
的页面“正文”和mouseup
,则bind
edmouseleave
事件是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');
});
}
});
只需使用 $(document).on('mouseup dragend', somefunc);