2013-07-16 85 views
0

我想在我的页面加载时在我的菜单项'#currentitem a'上触发mouseenter。我与做:mouseenter在页面加载时触发,如果没有其他mouseenter事件触发

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

我的问题是,如果我的MouseEnter(手动)其他项目,触发(与上面的代码)项目不鼠标离开。菜单项重叠。

我是新手,如果可能的话我想达到以下目的?

  1. mouseenter '#currentitem a' on pageload。
  2. mouseleave '#currentitem a'当另一个项目有一个mouseenter触发。
  3. 当该菜单项触发mouseleave时,mouseenter '#currentitem a'因此当没有其他东西时该项目总是被触发。

菜单是一个更复杂的jQuery设置的一部分,而不仅仅是纯CSS,所以这是我可以看到做到这一点的最佳方式。任何帮助将非常感激。

我现在已经创建了一个的jsfiddle显示什么,我试图做的:

http://jsfiddle.net/qFS84/

+0

这发生在你的逻辑有缺陷时。当鼠标离开某个元素时,你会期待发生某些事情,但鼠标永远不会离开该元素是可能的,而且您应该可以像关闭所有其他菜单等一样。当鼠标进入一个新的菜单项时,或者至少检查是否所有的东西在进入另一个菜单项时都按照预期关闭,而不仅仅是在离开时。 – adeneo

回答

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)。如果这是真的,你只需要听取其他锂元素上的mouseenter事件。

最后,如果您正在倾听事件,但他们不工作,他们可能会为您工作的另一个事件。本次活动是mouseover

中秋节编辑更新:

如果你谈论的是没有击中还有什么别的菜单没有隐瞒,当你的鼠标直接在“我们的项目”,这是因为鼠标从来没有“进入了”元素,所以它不会隐藏自身,解决这个问题的方法很简单:

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

那选择我的活动只针对未#currentitem,只会为每个链接触发一次链接元素。这可能只是你正在寻找的东西!我在你的jsfiddle上测试过它,确实有效。

+0

非常感谢您的帮助..但不幸的是,它的行为仍然如此。我是jquery的新手,所以无法挑选它。任何调整将不胜感激。 – xsample

+0

抱歉混淆元素是一个id = currentitem – xsample

+0

我现在创建了一个JSFiddle来显示即时消息试图做什么:http://jsfiddle.net/qFS84/ – xsample

相关问题