Lorsque j'écrivais un événement de retard js aujourd'hui, j'ai découvert que l'utilisation de $(this) de jquery dans la méthode setTimeout ne fonctionnait pas. Après divers tests, j'ai finalement conclu que le sélecteur de jquery n'était pas pris en charge dans setTimeout. J'ai donc demandé conseil aux experts en développement jquery sur QQ, et ils ont résolu le problème immédiatement. Je l'enregistrerai ici.
Voici le code js utilisé par l'auteur lors du traitement différé :
$('.dl_select dt').hover( function(){ clearTimeout(t3); $(this).siblings('dd').css({'display':'block','cursor':'pointer'}); }, function(){ t2=setTimeout(function(){$(this).siblings('dd').css({'display':'none'});},300); } ); $('.dl_select dd').hover( function(){ clearTimeout(t2); $(this).css({'display':'block','cursor':'pointer'}); }, function(){ t3=setTimeout(function(){$(this).css({'display':'none'});},200); } );
Faites attention au code dans setTimeout dans le code ci-dessus. Si ces codes ne sont pas dans cette méthode, il n'y a pas de problème en soi, mais dans ce cas, une erreur sera signalée. Quant à la raison, l’auteur ne l’a pas encore compris. Après avoir été éclairé par les internautes, je l'ai changé comme suit et tout ira bien. La méthode est très astucieuse. Voici le code correct :
$('.dl_select dt').hover( function(){ clearTimeout(t3); $(this).siblings('dd').css({'display':'block','cursor':'pointer'}); }, function(){ var $this=$(this).siblings('dd'); t2=setTimeout(function(){$this.css({'display':'none'});},300); } ); $('.dl_select dd').hover( function(){ clearTimeout(t2); $(this).css({'display':'block','cursor':'pointer'}); }, function(){ var $this=$(this); t3=setTimeout(function(){$this.css({'display':'none'});},200); } );
Ce qui précède représente l’intégralité du contenu de cet article, j’espère que vous l’aimerez tous.