页面加载时触发mouseenter&如果没有触发其他mouseenter事件

时间:2013-07-16 16:30:22

标签: jquery pageload mouseenter mouseleave

当我的页面加载时,我想在我的菜单项'#currentitem a'上触发一个mouseenter。我已经完成了:

$(document).ready(function(){
  $("#currentitem a").trigger('mouseenter');
});

我的问题是,如果我mouseenter(手动)另一个项目,触发(上面的代码)项目不会鼠标移动。菜单项重叠。

我是新手,如果有可能,我想实现以下目标?

    在页面加载中
  1. mouseenter '#currentitem a'
  2. mouseleave '#currentitem a'当另一个项目触发了mouseenter时。
  3. 当该菜单项触发mouseleave时,mouseenter '#currentitem a'以便在没有别的情况下始终触发该项目。
  4. 菜单是更复杂的jQuery设置的一部分,而不仅仅是简单的CSS,所以这是我能看到的最佳方式。任何帮助将不胜感激。

    我现在已经创建了一个JSFiddle来显示我想要做的事情:

    http://jsfiddle.net/qFS84/

1 个答案:

答案 0 :(得分:0)

这是值得尝试的事情

$(function(){
    $('#currentitem a').trigger('mouseenter');
    $('.currentitem a').on('mouseenter', function(e) {
        if ($('.currentitem a:focus').length > 0) {
            $('.currentitem a:focus').blur();
        }
    });
});

如果这不起作用,请告诉我,我会调整它。

编辑:

查看完编辑后,我可能已找到您的问题

使用jQuery定位元素时,id属性应仅在DOM中使用一次。假设你的html确实如此,我猜的下一件事就是当你输入一个不同的项目时(例如你列表中的下一个li)你没有听。如果是这样,您只需要监听其他li元素上的mouseenter事件。

最后,如果您正在倾听这些事件但他们无法正常工作,那么他们可能会为您工作。该活动为mouseover

中期修改更新:

如果你在谈论菜单没有隐藏当你直接鼠标“我们的项目”而没有点击任何其他内容时,那是因为鼠标永远不会“进入”元素所以它不会隐藏自己,周围的方式很简单:

$("#mydroplinemenu > ul > li[id!='currentitem'] > a").one('mouseenter', function(e) {
   $('#currentitem a').trigger('mouseleave'); 
});

我的事件的选择器仅定位非#currentitem的链接元素,并且每个链接只触发一次。这可能就是你想要的!我在你的jsfiddle上测试了它确实有效。