Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 引导4导航下拉菜单悬停在桌面上/单击移动_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 引导4导航下拉菜单悬停在桌面上/单击移动

Javascript 引导4导航下拉菜单悬停在桌面上/单击移动,javascript,jquery,html,css,Javascript,Jquery,Html,Css,boostrap4navbar,我删除了data-toggle=toggle,并使用jquery在桌面上添加了一个“open”悬停,效果非常好。我现在的问题是,我希望导航栏项目在某个断点“tablet/mobile”处“单击”。我会添加一个有条件的window.width吗?任何帮助/指导都会很棒 HTML: <div class="navbar-collapse collapse main-nav-bottom--ul" id=“nav”> <ul class="navbar

boostrap4navbar,我删除了data-toggle=toggle,并使用jquery在桌面上添加了一个“open”悬停,效果非常好。我现在的问题是,我希望导航栏项目在某个断点“tablet/mobile”处“单击”。我会添加一个有条件的window.width吗?任何帮助/指导都会很棒

HTML:

<div class="navbar-collapse collapse main-nav-bottom--ul" id=“nav”>
<ul class="navbar-nav">
    <li class="nav-item dropdown">
        <a class="nav-link dropdown-toggle" href="leigh.html" id="navbar-drop-downs"
           aria-haspopup="true" aria-expanded="false">
            <span class="underline-active"> Spotlight</span>
        </a>
        <div class="dropdown-menu dropdown-menu-nav-bottom"
             aria-labelledby="navbar-drop-downs">
            <a class="dropdown-item" href="ronstory.html">Rons Story</a>
            <a class="dropdown-item" href="disorder.html">Disorder</a>
        </div>
    </li>
    <li class="nav-item dropdown">
        <a class="nav-link dropdown-toggle" href="how-to-be-vocal.html" id="navbar-drop-downs"
           aria-haspopup="true" aria-expanded="false">
            <span class="underline-active">Test</span>
        </a>
        <div class="dropdown-menu dropdown-menu-nav-bottom"
             aria-labelledby="navbar-drop-downs">
            <a class="dropdown-item" href=“test.html">Test</a>
        </div>
    </li>
</div>

首先创建导航栏,然后再创建

悬停时打开子菜单

首先,我们需要弄清楚导航栏是否折叠。最简单的方法是确定窗口宽度。宽度小于768像素时,它将折叠。因此,当宽度为768或更大时,我们希望在悬停时显示子菜单,这种效果通常通过单击触发。让我们将这些知识带到javascript函数中

function toggleNavbarMethod() {  
    if ($(window).width() > 768) {  
        $('.navbar .dropdown').on('mouseover', function(){  
            $('.dropdown-toggle', this).trigger('click');   
        });  
    }  
}  
悬停父菜单项时,此时将显示子菜单。向外悬停不会关闭子菜单,这是我们想要的功能。这意味着我们需要向hover out事件添加一些功能

function toggleNavbarMethod() {  
    if ($(window).width() > 768) {  
        $('.navbar .dropdown').on('mouseover', function(){  
            $('.dropdown-toggle', this).trigger('click');   
        }).on('mouseout', function(){  
            $('.dropdown-toggle', this).trigger('click').blur();  
        });  
    }  
}  
这将在鼠标悬停时再次触发单击事件。当第二次单击关闭子菜单时,我们模拟这种行为。此外,我们希望摆脱对父菜单项的关注。因此,我添加了
blur()。但是当宽度低于768像素时,我们需要回到原来的“单击打开”方法。因此,让我们删除mouseover和mouseout事件侦听器

function toggleNavbarMethod() {  
    if ($(window).width() > 768) {  
        $('.navbar .dropdown').on('mouseover', function(){  
            $('.dropdown-toggle', this).trigger('click');   
        }).on('mouseout', function(){  
            $('.dropdown-toggle', this).trigger('click').blur();  
        });  
    }  
    else {  
        $('.navbar .dropdown').off('mouseover').off('mouseout');  
    }  
}  
导航栏功能齐全,只要导航栏未折叠,在悬停其父菜单时会打开子菜单

调整窗口大小时确定子菜单行为

但是如果用户调整窗口的大小呢?需要再次确定导航栏子菜单的行为。我们可以通过添加调整大小事件侦听器来实现这一点

$(window).resize(toggleNavbarMethod);
我们需要做的最后一件事是激活脚本并绑定resize侦听器

$(window).resize(toggleNavbarMethod);
最后的剧本

$(document).ready(function() {  
    function toggleNavbarMethod() {  
        if ($(window).width() > 768) {  
            $('.navbar .dropdown').on('mouseover', function(){  
                $('.dropdown-toggle', this).trigger('click');   
            }).on('mouseout', function(){  
                $('.dropdown-toggle', this).trigger('click').blur();  
            });  
        }  
        else {  
            $('.navbar .dropdown').off('mouseover').off('mouseout');  
        }  
    }  
    toggleNavbarMethod();  
    $(window).resize(toggleNavbarMethod);  
}); 
下面是一个例子

$(文档).ready(函数(){
函数toggleNavbarMethod(){
如果($(window.width()>768){
('mouseover',function(){
$('.dropdown toggle',this.trigger('click');
}).on('mouseout',function(){
$('.dropdown toggle',this.trigger('click').blur();
});  
}  
否则{
$('.navbar.dropdown').off('mouseover').off('mouseout');
}  
}  
toggleNavbarMethod();
$(窗口).resize(toggleNavbarMethod);
}); 

首先创建导航栏,然后再创建

悬停时打开子菜单

首先,我们需要弄清楚导航栏是否折叠。最简单的方法是确定窗口宽度。宽度小于768像素时,它将折叠。因此,当宽度为768或更大时,我们希望在悬停时显示子菜单,这种效果通常通过单击触发。让我们将这些知识带到javascript函数中

function toggleNavbarMethod() {  
    if ($(window).width() > 768) {  
        $('.navbar .dropdown').on('mouseover', function(){  
            $('.dropdown-toggle', this).trigger('click');   
        });  
    }  
}  
悬停父菜单项时,此时将显示子菜单。向外悬停不会关闭子菜单,这是我们想要的功能。这意味着我们需要向hover out事件添加一些功能

function toggleNavbarMethod() {  
    if ($(window).width() > 768) {  
        $('.navbar .dropdown').on('mouseover', function(){  
            $('.dropdown-toggle', this).trigger('click');   
        }).on('mouseout', function(){  
            $('.dropdown-toggle', this).trigger('click').blur();  
        });  
    }  
}  
这将在鼠标悬停时再次触发单击事件。当第二次单击关闭子菜单时,我们模拟这种行为。此外,我们希望摆脱对父菜单项的关注。因此,我添加了
blur()。但是当宽度低于768像素时,我们需要回到原来的“单击打开”方法。因此,让我们删除mouseover和mouseout事件侦听器

function toggleNavbarMethod() {  
    if ($(window).width() > 768) {  
        $('.navbar .dropdown').on('mouseover', function(){  
            $('.dropdown-toggle', this).trigger('click');   
        }).on('mouseout', function(){  
            $('.dropdown-toggle', this).trigger('click').blur();  
        });  
    }  
    else {  
        $('.navbar .dropdown').off('mouseover').off('mouseout');  
    }  
}  
导航栏功能齐全,只要导航栏未折叠,在悬停其父菜单时会打开子菜单

调整窗口大小时确定子菜单行为

但是如果用户调整窗口的大小呢?需要再次确定导航栏子菜单的行为。我们可以通过添加调整大小事件侦听器来实现这一点

$(window).resize(toggleNavbarMethod);
我们需要做的最后一件事是激活脚本并绑定resize侦听器

$(window).resize(toggleNavbarMethod);
最后的剧本

$(document).ready(function() {  
    function toggleNavbarMethod() {  
        if ($(window).width() > 768) {  
            $('.navbar .dropdown').on('mouseover', function(){  
                $('.dropdown-toggle', this).trigger('click');   
            }).on('mouseout', function(){  
                $('.dropdown-toggle', this).trigger('click').blur();  
            });  
        }  
        else {  
            $('.navbar .dropdown').off('mouseover').off('mouseout');  
        }  
    }  
    toggleNavbarMethod();  
    $(window).resize(toggleNavbarMethod);  
}); 
下面是一个例子

$(文档).ready(函数(){
函数toggleNavbarMethod(){
如果($(window.width()>768){
('mouseover',function(){
$('.dropdown toggle',this.trigger('click');
}).on('mouseout',function(){
$('.dropdown toggle',this.trigger('click').blur();
});  
}  
否则{
$('.navbar.dropdown').off('mouseover').off('mouseout');
}  
}  
toggleNavbarMethod();
$(窗口).resize(toggleNavbarMethod);
});