jQuery悬停函数IE错误

时间:2012-01-22 15:34:30

标签: javascript jquery

我在使用jQuery悬停函数时遇到了一些困难。很可能是因为长时间盯着相同的代码,但也许有人可以提供帮助。

我有以下功能:

    $("#div1").mouseover(function () {
        $("#div2:hidden").show();
    });
    $("#div1").mouseout(function () {
        $("#div2:visible").hide();
    });

我也尝试过:

    $("#div1").hover(function () {
        $("#div2:hidden").show();
    }, function() {
        $("#div2:visible").hide();
    });

在IE中都没有全部工作。我使用任何鼠标悬停,悬停,鼠标移除或任何其他“鼠标”功能编写的所有内容都会导致IE中出错。对于其他浏览器来说它是完美的,更令人烦恼的是它偶尔会在IE中运行,例如有时第一次和第二次它会起作用 - 然后就会出错。

任何帮助都会很棒!

7 个答案:

答案 0 :(得分:0)

其他人在这里工作是错误的

http://jsfiddle.net/TnPRA/4/

修改

还有一件事将你的代码包装在就绪处理程序中

$(document).ready(function(){

//your code here
});

因为这里不起作用,因为它没有包装在就绪处理程序中,请注意第二小提琴中的no wrap(head)选项

作为概念验证,请点击链接http://jsfiddle.net/TnPRA/10/

答案 1 :(得分:0)

这里的工作正常:http://jsfiddle.net/U89de/1/

你的第一个代码是错误的。更好的是使用:

$('#div1').mouseover(function() {
  // mouseover event
}).mouseout(function() {
  // mouseout event
});

如果使用jQuery 1.7或更高版本,最好使用.on()

$('#div1').on({
  mouseover : function() {
    // mouseover event
  },
  mouseout : function() {
    // mouseout event
  }
});

答案 2 :(得分:0)

我可能会遗漏一些东西,但我不明白为什么要在选择器中指定div2的可见性。以下应该可以正常工作:

$("#div1").mouseover(function () {
    $("#div2").show();
});
$("#div1").mouseout(function () {
    $("#div2").hide();
});

答案 3 :(得分:0)

用jQuery替换所有$符号

答案 4 :(得分:0)

我遇到了IE11的这个问题,将所有$更改为jQuery修复了这个问题。出于某种原因,IE在速记$上运行不佳。

答案 5 :(得分:-1)

尝试删除:隐藏和:从选择器中可见。 您正在使用ID来引用您的对象,在这种情况下您不需要ID。

$("#div1").hover(function () {
    $("#div2:hidden").show();
}, function() {
    $("#div2:visible").hide();
});

最好的问候,Davide

答案 6 :(得分:-1)

检查您的DOCTYPE,在这种情况下,您的示例使用:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">