Javascript 引导4导航下拉菜单悬停在桌面上/单击移动
boostrap4navbar,我删除了data-toggle=toggle,并使用jquery在桌面上添加了一个“open”悬停,效果非常好。我现在的问题是,我希望导航栏项目在某个断点“tablet/mobile”处“单击”。我会添加一个有条件的window.width吗?任何帮助/指导都会很棒 HTML: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
<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);
}); 代码>