如何覆盖 jQuery 函数或阻止它执行

Posted

技术标签:

【中文标题】如何覆盖 jQuery 函数或阻止它执行【英文标题】:How to overwrite a jQuery function or stop it from executing 【发布时间】:2013-04-04 23:25:00 【问题描述】:

我有一个 jQuery 函数,可以将 WordPress 菜单转换为浮动菜单,然后再返回。

我想在主题中创建一个演示面板,允许用户在静态和浮动菜单之间切换或切换。

工作地点可以在这里看到:http://morphius.wpinsite.com

这是将菜单设置为浮动的 jQuery 代码。

function header_transform()

        window_y = $(window).scrollTop();
        var wp_admin_height = "0px";
        if ($("#wpadminbar").length > 0)
            wp_admin_height = parseInt($("#wpadminbar").height()) + "px";
        
        if (window_y > scroll_critical) 
            if (!($("#header-wrapper").hasClass("fixed")))
                    $("#header-wrapper").hide();
                    $("#wrapper").css("margin-top", header_h + "px");
                    $("#header-wrapper").addClass("fixed").css("top", wp_admin_height);
                    $("#header-wrapper").fadeIn(500);
                    //$logo2_link.fadeIn().appendTo(".header");
                    $logo2_link.fadeIn().prependTo(".header");
                    fixedmenu = true;
            


         else 
            if (($("#header-wrapper").hasClass("fixed")))
                $("#header-wrapper").fadeOut(500, function()
                    $("#header-wrapper").removeClass("fixed");
                    $("#wrapper").css("margin-top", "");
                    $("#header-wrapper").fadeIn(300)
                );

                $logo2_link.fadeOut().remove();
                fixedmenu = false;
            

        

我想要实现的是,如果用户点击演示选项面板并将菜单设置为“固定”,那么下面的 jQuery 代码将不会执行和转换菜单。

默认情况下,下面的 jQuery 代码将始终运行。如果有人单击“固定”菜单选项,我只需要一种方法来阻止它执行。

谢谢

【问题讨论】:

您可以使用.off().unbind() 删除事件处理程序(它们是.on().bind() 的对立面)。 【参考方案1】:

在你的函数的开头添加这样的东西:

if($(".switcherFixed img").hasClass("selected")) 
    return;

有帮助吗?

【讨论】:

嗨,卡洛斯,是的,效果很好,谢谢。只需要添加一点额外的 jQuery 代码来隐藏 logo。 不用担心 - 使用 jQuery 一切都变得更简单!

以上是关于如何覆盖 jQuery 函数或阻止它执行的主要内容,如果未能解决你的问题,请参考以下文章

如何阻止 jQuery 函数在较小的屏幕上执行?

覆盖/拦截所有jQuery函数

jQuery 取消事件冒泡 阻止后续内容执行 闭包函数 (学习笔记)

如何覆盖一个函数?

如何在运行时阻止forEach循环不执行两次?

阻止直接访问文件,但允许通过 jquery 加载函数访问