2010-12-03 59 views
0

Je souhaite rouvrir une question posée par quelqu'un d'autre. Quelle est la meilleure façon d'émuler mouseenter avec live ou délégué? La question initiale était ici:mouseenter en utilisant live ou delegate?

How should I emulate a mouseenter event using jquery's live functionality?

Et la proposition de l'OP était:

// 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 
    */ 
}); 
+0

Je ne comprends pas la "question". – jAndy

Répondre

0

Je fini par faire:

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

Quelqu'un at-il une meilleure solution?

2
$('ul.cms_tabs_edit').delegate('li', 'mouseenter', function() { 
    $(this).addClass('hover'); 
}); 

$('ul.cms_tabs_edit').delegate('li', 'mouseleave', function() { 
    $(this).removeClass('hover'); 
});