0

我有一个用 jQuery 编写的菜单,它在被事件触发时弹出。它的侧面有一个垂直滚动条。滚动在 FireFox 中运行良好,但在 IE(8 或 9)中不行。我想这与mousedown事件有关,需要从菜单中选择一个项目。

    .mousedown(function (event) {
        var li = get_element_from_event(event, "li");
        if(li){
            return false;
        }

在 IE 的情况下,当在滚动条上单击鼠标时,菜单会再次折叠(就像用户进行了选择一样)。

这是 IE 中的常见问题(即滚动条问题)吗?

我认为这也与以下滚动条代码片段有关

$(".token-input-list")[0].scrollTop = $(".token-input-list")[0].scrollHeight;
4

4 回答 4

0

根据get_element_from_event()所做的事情以及您正在使用的其他内容mousedown,IE 可能行为正确——如果事件目标不是一个元素,它应该会返回 false for li,因此它会失败if(li),因此不会返回 false for mousedown,但是继续加油。

就修复它而言,您需要找出 IE 返回的内容li(通过警报或控制台),并在新的 var/function 中get_element_from_event()或在新的 var/function 中对其进行测试。

于 2011-02-20T06:41:23.763 回答
0

如果您的 .mousedown 事件附加到滚动条所在的同一元素,请将您的 .mousedown 事件移动到具有滚动条的 div的新 div。

于 2011-02-20T06:56:29.673 回答
0

感谢您的输入 - 我在滚动条问题上发现了很多错误,所以我通过在此处找到一个不错的列表脚本来解决它:http ://rascarlito.free.fr/hoverscroll/ 。Dit IE 的技巧,因此对我来说;)

于 2011-02-20T11:13:28.010 回答
0

问题是使用全局 window.event 对象,而不是 jQuery 的事件对象。window.event 仅适用于某些浏览器,它不是 W3C 标准。

jQuery 对事件对象进行规范化,因此它在所有浏览器中都是相同的。事件处理程序将该 jQuery 事件对象作为参数传递。使用那个。

$(".class_name").mousedown(function (e) {

  switch (e.which) {
    case 1: //leftclick
        //...
        break;
    case 3: //rightclick
        //...
        break;
  }
});
于 2013-04-04T14:20:10.737 回答