Maison > interface Web > js tutoriel > Solution au sélecteur jquery qui n'est pas pris en charge dans les compétences setTimeout_javascript

Solution au sélecteur jquery qui n'est pas pris en charge dans les compétences setTimeout_javascript

WBOY
Libérer: 2016-05-16 16:01:47
original
1400 Les gens l'ont consulté

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); 
  } 
); 
Copier après la connexion

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); 
  } 
); 
Copier après la connexion

Ce qui précède représente l’intégralité du contenu de cet article, j’espère que vous l’aimerez tous.

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal