在IE和Safari中滚动条移动后不会触发mouseup事件
mouseup event is not triggered after scroll bar moves in IE and Safari
我在网站上搜索了一下,但没有得到对我的情况有用的信息。一个简单的演示可以在jsfiddle
找到。当我移动到div滚动条并按下鼠标时,事件'mousedown'被触发。然后我滚动条,松开鼠标。不幸的是,事件'mouseup'没有在IE/Safari中触发。Chrome和Firefox可以正常工作。是否有IE和Safari的变通解决方案?谢谢!
示例代码:
<div class="box">
<div class="box-inner">
</div>
</div>
<p id="text"></p>
jQuery: $(document).ready(function() {
var $txt = $('#text');
$('.box').mouseup(function() {
$txt.text('mouseup');
});
$('.box').mousedown(function() {
$txt.text('mousedown');
});
});
在网站上做了更多的搜索,得到了类似的问题。问题中提出的solution
虽不完善,但值得一试。
$(document).ready(function() {
var $txt = $('#text'), $win = $(window), $doc = $(document);
$win.on('mousedown', function(event) {
$txt.text('mousedown');
if(event.pageX < ($win.width() - 10)) {
return;
}
$doc.on('mousemove', function(event) {
if(event.pageX < ($win.width() - 10)){
//mouse is off scrollbar
$(this).unbind(event);
$win.trigger('mouseup', ['manual fire']);
}
});
}).on('mouseup', function(event, str) {
$txt.text('mouseup: ' + str);
});
});
mouseup
在Safari中为我开火…我不能在IE中测试,因为我在Mac上,但请试试这个:
$(document).ready(function() {
var $txt = $('#text');
$('.box').on("mousedown.box", function() {
$txt.text('mousedown');
$(document).one("mouseup.box", function() {
$txt.text('mouseup');
});
});
});
基本上是将mouseup
绑定到Document
,当你mousedown
,然后在它触发后删除绑定:)这样,mouseup
将总是触发,无论鼠标在哪里
相关文章:
- 在拖动过程中释放鼠标时忽略 JavaScript mouseUp 事件
- ExtJS 4按钮上的mousedown/mouseup事件
- 用标准javascript而不是jquery中的mousedown、mousemove和mouseup触摸事件句柄
- MSIE 无法识别 .mouseup() 事件之前所选项目的更新
- mouseup事件后禁用jQuery contextMenu
- mouseup事件停止firefox上的click事件
- html select上的MouseUp()事件不起作用
- 事件--'mouseup'鼠标移动后未启动
- 是mousedown事件固有地比mouseup事件慢
- 谷歌地图矩形mouseDown和mouseUp事件无法在边界触发
- 使用jquery在body mouseup事件后停止传播
- 双击时从对话框中选择文件时,避免出现mouseup事件
- jQuery:如何将函数绑定到mouseup事件之后立即发生的某个事件
- 触发旋转的MouseUp事件
- Mouseup事件与可见性开关冲突
- 悬停在iframe上后不会触发文档上的Mouseup事件
- JavaScript mouseup事件被触发多次在一次点击
- 在IE和Safari中滚动条移动后不会触发mouseup事件
- 使用mouseup事件选择文本,使用调用函数选择dbclick事件
- 如何获取"mouseup"之后的元素事件完成