jQuery .hover 在 Safari 或 Chrome 中不起作用

Posted

技术标签:

【中文标题】jQuery .hover 在 Safari 或 Chrome 中不起作用【英文标题】:jQuery .hover not working in Safari or Chrome 【发布时间】:2011-03-07 15:10:35 【问题描述】:

我目前正在尝试让一些 jQuery 悬停效果在所有浏览器中正确呈现。目前,firefox、IE、opera 都在做他们应该做的事情。但是,Safari 和 Chrome 却没有。

代码如下所示:

<div id="button1">
    <div id="work_title" class="title_james">
    WORDS
</div>
</div>
<div id="button2">
    <div id="work_title" class="title_mike">
    MORE WORDS
</div>
</div>

影响它的脚本看起来像这样

<script>
$(function() 
$("#button2").hover(
function() 
    $("#james").css('z-index', '100')
    $(".title_mike").css('width', '590px')
, function() 
    $("#james").css('z-index', '')
    $(".title_mike").css('width', '')
);
);​
$(function() 
$("#button1").hover(
function() 
    $(".title_james").css('width', '785px')
, function() 
    $(".title_james").css('width', '')
);
);​
</script>

我想要做的是将鼠标悬停在两个大文本区域上时更改 css 样式的两个元素..

我已经尝试了 mouseenter .addClass 和 mouseleave .removeClass 的东西,但根本没有用。所以当我让它在 Firefox 中工作时,我很高兴......然后我做了跨浏览器检查,我得到了又伤心了。。

您可以在以下位置看到它的实际效果: http://roboticmonsters.com/who

【问题讨论】:

在 SO 上,您可以对有帮助的答案进行投票,并接受一个答案作为向其他用户表示感谢的解决方案。 【参考方案1】:

使用 Chrome 中的开发工具,它说每个 javascript 函数的末尾都有一个无效令牌。 IE 开发工具也显示了一个无效的令牌,但它似乎忽略了这一点并正确呈现。如果可以,请检查您的来源并删除令牌。

IE:

铬:

【讨论】:

哇,谢谢你...我责怪从 jqueryui 站点复制和粘贴,然后编辑变量名:S.. 愚蠢的复制粘贴【参考方案2】:

$.css 接受一个对象:

$("#james").css('z-index': '100');

注意花括号和冒号(不是逗号)。

这样您就可以在一个中指定多个 css 规则:

$("#james").css('z-index': '100', 'height': '100px');

如果您要获取一个css规则的值,只需将名称作为字符串传入:

$("#james").css('z-index'); // returns 100

【讨论】:

.css 也可以只接受属性名称和值,如问题代码中所示。【参考方案3】:

这可能是因为您试图在 DOM 加载之前绑定到这些事件。

我没有太多时间回答为什么它被破坏了,但以下内容在 chrome 中对我有用。

    $(document).ready(function() 
    $("#button2").hover(function() 
                $("#james").css('z-index', '100');
                $(".title_mike").css('width', '590px');
                ,
                function() 
                $("#james").css('z-index', '');
                $(".title_mike").css('width', '');      
                
            );
    $("#button1").hover(function() 
                $(".title_james").css('width', '785px');
                ,
                function() 
                $(".title_james").css('width', '');     
                
            );
);

【讨论】:

【参考方案4】:

如果只使用下面的代码就可以了:

$("#button2").hover(
function() 
    $("#james").css('z-index', '100')
    $(".title_mike").css('width', '590px')
, function() 
    $("#james").css('z-index', '')
    $(".title_mike").css('width', '')
);

否则 Chrome 会报告:Unexpected token ILLEGAL。要亲自查看,请右键单击页面并选择inspect element。点击右下角的小红x

更新:实际上,如果您删除@anothershubery 的答案中显示的非法字符,您的代码可以正常工作

【讨论】:

以上是关于jQuery .hover 在 Safari 或 Chrome 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

jQuery .hover() 或 .animate() 在 Marquee 插件中导致冒泡动画

导航 CSS :hover 在 Safari 上推送内容

当用户“点击”时,在 Mobile Safari 中添加 :hover 效果

CSS :hover 在 iOS Safari 和 Chrome 上不起作用

纯 Javascript 或 VueJS 事件的 Mousemove 和 Hover Jquery 效果

jquery javascript的事件函数 如何传入多个元素值/或类名,比如hover()事件函数传入2个以上元素class名