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.