Heim  >  Artikel  >  Web-Frontend  >  Lösung für den JQuery-Selektor, der in den setTimeout_javascript-Kenntnissen nicht unterstützt wird

Lösung für den JQuery-Selektor, der in den setTimeout_javascript-Kenntnissen nicht unterstützt wird

WBOY
WBOYOriginal
2016-05-16 16:01:471315Durchsuche

Als ich heute ein js-Verzögerungsereignis schrieb, stellte ich fest, dass die Verwendung von jquerys $(this) in der setTimeout-Methode nicht funktionierte. Nach verschiedenen Tests kam ich schließlich zu dem Schluss, dass der jquery-Selektor in setTimeout nicht unterstützt wird. Deshalb habe ich die JQuery-Entwicklungsexperten auf QQ um Rat gefragt und sie haben das Problem sofort gelöst. Ich werde es hier aufzeichnen.
Das Folgende ist der vom Autor bei der verzögerten Verarbeitung verwendete js-Code:

$('.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); 
  } 
); 

Achten Sie auf den Code in setTimeout im obigen Code. Wenn diese Codes nicht in dieser Methode enthalten sind, liegt an sich kein Problem vor, in diesem Fall wird jedoch ein Fehler gemeldet. Den Grund dafür hat der Autor noch nicht herausgefunden. Nachdem ich von Internetnutzern aufgeklärt wurde, habe ich es wie folgt geändert. Die Methode ist sehr clever. Das Folgende ist der richtige Code:

$('.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); 
  } 
); 

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn