jQuery悬停函数IE错误

jQuery hover functions IE error

本文关键字:错误 IE 函数 悬停 jQuery      更新时间:2023-09-26

我在使用jQuery悬停函数时遇到了一些困难。可能是因为盯着同一个代码看太久了,但也许有人能帮上忙。

我有以下功能:

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

我也尝试过:

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

两者在IE中都不起作用。我使用ANY mouseover、hover、mouseout或任何其他"鼠标"功能编写的所有内容都会导致IE中的错误。对于其他浏览器来说,它是完美的,更令人讨厌的是,它偶尔会在IE中起作用,例如,有时第一次和第二次它都会起作用,然后就会出错。

任何帮助都将是美妙的!

它在这里工作得很好: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
  }
});

我可能缺少一些东西,但我不明白为什么要在选择器中指定div2 w/的可见性。以下操作应该很好:

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

有些其他东西是错误的,它在这里工作

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

编辑

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

$(document).ready(function(){
//your code here
});

因为这在这里不起作用,所以它没有封装在就绪处理程序中,请注意次要中的no wrap(head)选项

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

用jQuery 替换所有$符号

我在IE11中遇到了这个问题,将所有$更改为jQuery解决了这个问题。由于某种原因,IE无法很好地使用缩写$。

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

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

致以最良好的问候,Davide

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

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