【问题标题】:How to change the Hover event to Click event in media query 768 (Navbar)如何在媒体查询 768(导航栏)中将 Hover 事件更改为 Click 事件
【发布时间】:2017-10-13 03:15:49
【问题描述】:

在我的导航上有一个子页面,我正在使用此代码选项 1 和选项 2 都在工作,我可以选择使用其中的哪一个,但问题是在移动设备视图中悬停时子页面仍然显示,这对移动设备来说是个坏主意,我想要实现的是,当涉及到移动设备示例尺寸 768 时,导航栏是可点击的并显示子页面,而不是悬停导航栏并显示子页面。

选项1:

ul.nav li.dropdown:hover > ul.dropdown-menu{
    display: block;
    margin: 0;
}

选项2:

jQuery('ul.nav li.dropdown').hover(function() {
  jQuery(this).find('.dropdown-menu').stop(true, true).show();
  jQuery(this).addClass('open');
}, function() {
  jQuery(this).find('.dropdown-menu').stop(true, true).hide();
  jQuery(this).removeClass('open');
});

我的网站是在 bootstrap 3、wordpress 中构建的,我使用navwalker进行导航

希望您能帮助我解决移动设备导航栏问题。谢谢


我找到了解决问题的方法
在桌面视图中,子页面会在您悬停父导航时显示,而在移动设备视图中,子页面只会在您单击父导航时显示。
感谢 user1079877

$('.dropdown').mouseenter(function(){
    if(!$('.navbar-toggle').is(':visible')) { // disable for mobile view
        if(!$(this).hasClass('open')) { // Keeps it open when hover it again
           $('.dropdown-toggle', this).trigger('click');
        }
    }
});

【问题讨论】:

  • 您可以将选项 1 与媒体查询一起使用。我相信大多数触控设备的浏览器不会对悬停做任何事情。
  • 我尝试在 768 中将 display:block 转换为 display:none,当我点击父导航时,子页面不会显示。

标签: jquery html css wordpress twitter-bootstrap


【解决方案1】:

您需要检查窗口的宽度,然后将其置于 IF 条件下并检查它是否小于 768,然后单击或悬停。见下面的例子,

$(window).resize(function() {

    var width = $(window).width();

    if( width < 768 ) {

        // click event here

    } else {

        // hover event here

    }

});

试试这个,希望对你有用。

【讨论】:

  • 嗨@Airish我如何将我的jquery代码(选项2)悬停事件转换为jquery中的单击事件?抱歉这个菜鸟问题。
  • 或者,您可以简单地绑定两个事件。
  • 我尝试在我的代码中将 .hover 更改为 .click:jQuery('ul.nav li.dropdown')。 点击(函数()但没有运气
  • @MelvinR​​ey 你可以为菜单发布你的 HTML 代码吗?
【解决方案2】:

勾选这个Fiddle.这是你想要实现的吗?

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);

【讨论】:

  • 多次调整视图大小后,桌面中的悬停事件无法正常工作。无论如何,感谢您的帮助。我在 navwalker 中找到了我的问题的答案。请参阅我更新的帖子以供将来参考。
猜你喜欢
  • 1970-01-01
  • 2012-07-25
  • 2016-05-27
  • 1970-01-01
  • 1970-01-01
  • 2013-09-02
  • 1970-01-01
  • 2017-02-18
  • 1970-01-01
相关资源
最近更新 更多