javascript - 我可以将一个函数变成一个变量以减少我的代码吗(请调试 JavaScript 代码)

标签 javascript jquery html css

您好,我一直在一遍又一遍地思考如何简化这个 Java 脚本代码。

我是 JavaScript 的新手,我不知道还能去哪里。 我正在做一个导航,当我点击一个按钮时,它将动画化为 transform:translateX(0); from transform:translateX(-98%); 作为一个类.

如果您将鼠标悬停在 div .main-navigation 上,我也会这样做,它会相应地来回滑动。我有它,如果它打开到关闭状态,mouseover 将滑动导航,但当它关闭打开时我不能这样做。如果 .home 处于事件状态,我也试图做到这一点,那么悬停将不会打开或关闭 .home 只是菜单。

有什么建议吗?

$(function(){
    var navToggle = document.querySelectorAll('.nav-toggle');
    var mainMenu = document.querySelectorAll('.main-navigation');

    $(navToggle).on('click', function(){
        if ($(mainMenu).hasClass('close')){
            $(mainMenu).removeClass('close');
            $(mainMenu).addClass('open');
        }else{
            $(mainMenu).addClass('close');
            $(mainMenu).removeClass('open');
        };
        $('.home').toggleClass('hide, toggleAnimate');
        $('.contentWrap').toggleClass('open');
    });

    $(mainMenu).on('mouseenter', function(){
        if ($(mainMenu).hasClass('close')){
            $(mainMenu).removeClass('close');
            $(mainMenu).addClass('open');
        }
        if ($(mainMenu).hasClass('open')){
            $(mainMenu).removeClass('open');
            $(mainMenu).addClass('close');
        };
    });
});

抱歉,我创建了一个代码笔来向您展示我正在尝试做的事情以及正在发生的行为的非常接近的示例。

My CodePen Example

最佳答案

没关系,我已经弄清楚了,我使用了 JQuery 并且能够实现我的目标。我最终将其更改为此。

$(function(){
homeAnimate();
menuAnimate();
menuAnimate2();
autoAnimateEnter();
autoAnimateExit();

function homeAnimate(){
    $('.nav-toggle').click(function () {
        $('.home').toggleClass('hide, toggleAnimate');
        $('.contentWrap').toggleClass('open');
    });
}

function menuAnimate(){
    $('.nav-toggle').click(function () {
        if ($('.main-navigation').hasClass('close')) {
                $('.main-navigation').addClass('close');
                $('.main-navigation').toggleClass('open');
        }
        if ($('.main-navigation').hasClass('open')) {
                $('.main-navigation').toggleClass('close');
                $('.main-navigation').toggleClass('open');
        }
    });
}

function menuAnimate2(){
    $('.nav-toggle-menu').click(function () {
        if ($('.main-navigation').hasClass('open')) {

        } else {
            $('.main-navigation').addClass('open');
            $('.main-navigation').removeClass('close');
        }
        $('.home').toggleClass('hide, toggleAnimate');
        $('.contentWrap').toggleClass('open');
    });
}

function autoAnimateEnter(){

    $('.main-navigation').mouseenter(function () {
        if ($('.main-navigation').hasClass('close')) {
            $('.main-navigation').removeClass('close');
            $('.main-navigation').addClass('open');
        } else {
            // DO NOTHING
        }
    });
}

function autoAnimateExit(){

    $('.main-navigation').mouseleave(function () {
        if ($('.home').hasClass('toggleAnimate')) {
            // DO NOTHING
        } else {
            $('.main-navigation').removeClass('open');
            $('.main-navigation').addClass('close');
        }
    });
}

});

我不确定这是否是实现我的目标的最干净的方法,但它有效,我很高兴。

如果有人想查看,这是我的代码。 Code

关于javascript - 我可以将一个函数变成一个变量以减少我的代码吗(请调试 JavaScript 代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27831262/

相关文章:

javascript - 循环 Javascript 计时器

javascript - 代码仅适用于 jsfiddle

jquery - GMaps.js : Trace route between two markers set by geocoding

javascript - 如果有多个图像,请添加样式

css - 使用@font-face 打开 Sans 字体问题

javascript - PHP登录框错误

Javascript 连接/拆分替代语法

javascript - 根据第一个下拉列表更改第二个下拉列表

javascript - JQuery 将 html 形式转换为正确格式的 JSON

html - CSS 动画自动滚动文本问题