jQuery mouseleave无法正常运行

时间:2017-12-04 01:31:23

标签: javascript jquery css

我正在尝试使用jQuery关闭下拉列表,如果它在鼠标离开元素时打开。

这应该是小菜一碟,但它不起作用。我这样做是因为回去做任何其他方式都是太多的工作。

这是一个很好的截图:

这是临时站点:
http://www.nickysfolders.com/?SessionThemeID=34

我应该能够移除.open.open未成功删除。

这些是涉及的脚本(最后一个是问题):

$(document).on('click', 'a.dropdown-toggle', function(e) {
    $("div#drop-back-trigger").toggleClass("shadow");
    console.log("pressed");
    e.stopPropagation();
})
$('.dropdown-toggle').dropdown();
$('.dropdown-toggle').removeAttr('data-toggle');
$('.dropdown').hover(function() {
    $('.dropdown-toggle', this).trigger('click');
});
$('.dropdown.mega-dropdown').on('mouseleave', function() {
    if ($('.dropdown').hasClass('open')) {
        $('.dropdown').removeClass('.open');
        console.log('AWAKEN');
    }
});

我希望菜单的功能与其他可以通过悬停打开的菜单一样。不幸的是,下拉菜单没有结束。

2 个答案:

答案 0 :(得分:0)

语法:$(selector).mouseleave(function)

$('.dropdown.mega-dropdown').mouseleave(function() {})

Rerefence jQuery event mouseleave

$(document).on('click', 'a.dropdown-toggle', function(e) {
    $("div#drop-back-trigger").toggleClass("shadow");
    console.log("pressed");
    e.stopPropagation();
  })

  $('.dropdown-toggle').dropdown();
  $('.dropdown-toggle').removeAttr('data-toggle');

  $('.dropdown').hover(function(){ 
    $('.dropdown-toggle', this).trigger('click'); 
  });

  $('.dropdown.mega-dropdown').mouseleave(function() {
    if($('.dropdown').hasClass('open')) {
        $('.dropdown').removeClass('open');   
console.log('AWAKEN');
    }
    });

答案 1 :(得分:0)

你有一个错字配偶。删除点“。”来自.open

// Won't work. There is no class ".open"
$('.dropdown').removeClass('.open');

// Fix
$('.dropdown').removeClass('open');

更新: 最佳做法是从该特定元素中删除该类,以便您可以使用this代替:

if ($(this).hasClass('open')) {
    $(this).removeClass('open');
}