我应该如何使用jquery的实时function模拟mouseenter事件?

我想为mouseenter事件使用jQuery的强大实时function,但它目前不受支持。 下面是我的第一个解决方案,但它似乎不是最佳的。 建议? 改进?

// mouseenter emulation jQuery('.selector').live('mouseover',function (e) { // live sees all mouseover events within the selector // only concerned about events where the selector is the target if (this != e.target) return; // examine relatedTarget's parents to see if target is a parent. // if target is a parent, we're "leaving" not entering var entering = true; jQuery(e.relatedTarget).parents().each(function () { if (this == e.target) { entering = false; return false; // found; stop searching } }); if (!entering) return; /* the rest of my code */ }); 

我无法检查目标的孩子是否有相关的目标b / c,这并不是一个简单的方法来获取所有子节点。 我不能直接检查目标的父母是否将relatedTarget作为父母,因此“输入”目标,b / c用于鼠标hover,它可以从相邻的兄弟而不是父母进入。

此解决方案正常。 我测试了它,看起来很好,但我怎么能改进呢? 它也受到DOM布局的影响。 必须公开选择器元素的某些部分才能看到鼠标hover事件,但这在我尝试使用的示例中很少出现问题。 不过,如果有办法保证它会被看到,那就太好了。

我想我想知道我是否接近这个权利,如果不是,那还有什么更好的?

我最终做了:

 $("#id").delegate(".selector", "mouseover", function(){ if(!$(this).hasClass("bound")){ $(this).hover(function(){ alert('entering'); }, function(){ alert('leaving'); }).mouseover().addClass("bound"); } }); 

现在已经有一段时间没有接受者了,所以我假设没有什么比这更好了。

我现在正在几个项目中使用它,所以我会把它从未解决的问题堆中拿出来。

希望其他人觉得它很有用,如果你发现了一个bug或想出更好的东西,请告诉我。

刚碰到类似的东西。 这是我的解决方案

HTML:

  

JS