微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jquery – 除Firefox之外的所有浏览器中的Mouseup错误?

对于动态添加的元素(Firefox除外),滚动条不会触发Mouseup:

CSS:

#dBox {
    height: 100px;
    width: 230px;
    overflow - y: auto;
}

HTML:

< input type =“text”id =“s”>

JQuery的:

$(function() {
    $('#s').focus(function() {
        var $dBox = $('<ul id="dBox"></ul>');
        for (i = 0; i < 10; i++) $dBox.append('<li>' + i + '</li>');
        $(this).after($dBox);
        $dBox.bind("mouseup",function() {
            alert('in: ');
            //console.log ('in: ');  
        });
    });
});
// OR LIKE THIS
$('#s').focus(function() {
    var $dBox = $('<ul id="dBox"></ul>');
    for (i = 0; i < 10; i++) $dBox.append('<li>' + i + '</li>');
    $(this).after($dBox);

});
$('#dBox').live("mouseup",function() {
    alert('in: ');
    //console.log ('in: ');  
});

如果你单击ul上的任何地方将触发但不在滚动条上.除Firefox之外的所有浏览器都存在同样的问题.

如果将’mouseup’替换为’mousedown’,也会在所有浏览器中触发滚动条.

经过几次测试之后,似乎没有任何区别,如果’ul’它是否添加了dinamically,鼠标似乎不会将滚动条识别为’ul'(FF除外)的一部分.

如果你用’div’替换’ul’而用’p’替换’li’也是同样的问题.
< div id =“dBox”class =“”>< p> 1< / p>< p> 2< / p>< p> 3< / p>< p> 4< / p> < p为H. 5℃; / p为H.< p为H. 6≤/ p为H.&LT p为H. 7 LT; / p为H.&LT p为H. 8 LT; / p为H.&LT p为H.; 9< / p>< / DIV>

$(‘#dBox’).mouseup(function(){alert(‘in:’);});

解决方法

对.这是Chrome上的漏洞: http://code.google.com/p/chromium/issues/detail?id=14204

在webkit上:https://bugs.webkit.org/show_bug.cgi?id=25811https://bugs.webkit.org/show_bug.cgi?id=40648

这是微软的一个居高临下的“你不需要它”的回应:http://social.msdn.microsoft.com/Forums/en-US/netfxjscript/thread/3749b8a1-53ef-48fe-be81-b2df39d6154f/

最后一个线程提出了使用onscroll作为onmouseup的替代品的可能性.这可能是部分解决方法.

原文地址:https://www.jb51.cc/jquery/180695.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐