jQuery hover() 中的语法错误

Posted

技术标签:

【中文标题】jQuery hover() 中的语法错误【英文标题】:Syntax error in jQuery hover() 【发布时间】:2011-12-15 04:19:27 【问题描述】:

我正在尝试构建一个带有导航菜单的网站,该菜单在将鼠标悬停在当前未“选择”或“活动”的导航按钮上时切换类。这是代码的简单版本:

<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<style type="text/css">
ul li a.selected font-weight:bold;
ul li a.hover color:yellow;
div.page position:absolute;
</style>

<script type="text/javascript">
$(function()
    $("div.page:not(:first)").hide();   // hide all pages except the home page

    var menu=$("div.navMenu ul li a");
    menu.click(function()
        var previous=window.location.hash;
        var selected=$(this).attr("href");
        if (previous != selected) 
            $("div.page"+previous).fadeOut();
            $("div.page"+selected).fadeIn();
            
        $(this).addClass("selected");
        menu.not(this).removeClass("selected");
    );

    menu.hover(function()
        $(this:not(.selected)).toggleClass("hover");
    );

);
</script>
</head>
<body>
<div class="navMenu">
<ul>
<li><a href="#home">Home</a></li>
<li><a href="#portfolio">Portfolio</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</div>
<div class="page" id="home">This is my home page.</div>
<div class="page" id="portfolio">This is my portfolio page.</div>
<div class="page" id="contact">This is my contact page.</div>
</body>
</html>

Dreamweaver 提示与

行有语法错误
$(this:not(.selected)).toggleClass("hover");

但是,我看不出语法错误是什么。 (这个想法是只为没有“选定”类的菜单按钮切换“悬停”类)。任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

我认为应该是:

$(this).not(".selected").toggleClass("hover");

【讨论】:

嗨,确实是这样!谢谢。 顺便说一句,“if.. hasClass”这个东西似乎没有必要;据我所知,如果元素没有该类,“removeClass”无论如何都不会做任何事情。 很高兴你能成功。如果您满意,请不要忘记接受答案。【参考方案2】:

应该是$(this).not(".selected").toggleClass("hover");左右

【讨论】:

【参考方案3】:

$(this:not(.selected)).toggleClass("hover"); 表达式无效。

使用类似的东西:

menu.hover(function()
        if ($(this).hasClass('selected'))
            $(this).addClass("hover");
    , function() 
        if ($(this).hasClass('selected'))
            $(this).removeClass("hover");
    );

【讨论】:

以上是关于jQuery hover() 中的语法错误的主要内容,如果未能解决你的问题,请参考以下文章

Tailwindcss:语法错误:`hover:rounded-xl` 类不存在

.is(":hover") 自 jQuery 1.9 起已损坏 如何修复

jquery 1.7.1 - 查询字符串中的括号“(”引起的语法错误

如何防止 jQuery tablesorter 中的“未捕获的异常:语法错误,无法识别的表达式”?

在 firebug 中发现 JQuery 语法错误,但在我的代码中没有

jQuery 语法错误:#/