Ich habe heute an einem Projekt gearbeitet und bin auf ein Problem gestoßen, auf das ich noch nie zuvor gestoßen bin, also habe ich es mir notiert.
1. Erläuterung der Triggermethode
Dies ist die offizielle Erklärung:
Verwendung:
.trigger( eventType [, extraParameters] )
Der EventType umfasst in Javascript integrierte Ereignisse, durch jQuery hinzugefügte Ereignisse und benutzerdefinierte Ereignisse. Zum Beispiel:
$('#foo').bind('click', function() { alert($(this).text()); }); $('#foo').trigger('click'); $('#foo').bind('custom', function(event, param1, param2) { alert(param1 + "\n" + param2); }); $('#foo').trigger('custom', ['Custom', 'Event']);
ist sehr leistungsfähig und wird häufig bei der Seiteninitialisierung verwendet.
2. Trigger trifft Hover
var $search=$('#header .search'); $search.find('li').hover(function() { alert(1); },function() { alert(2); }); $search.find('li').eq(0).trigger('hover');
Hover kann nicht ausgelöst werden. Aber:
var $search=$('#header .search'); $search.find('li').click(function() { alert(1); },function() { alert(2); }); $search.find('li').eq(0).trigger('click');
Das Auslösen eines Klicks ist normal!
Lösung:
var $search=$('#header .search'); $search.find('li').hover(function() { alert(1); },function() { alert(2); }); $search.find('li').eq(0).trigger('mouseenter');//hover修改为mouseenter/mouseleave/mouseover/mouseout
Die gleiche Situation besteht mit jQuery.live(), aber Live wird nicht für die Verwendung in Versionen nach 1.7 empfohlen. Verwenden Sie stattdessen on().
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.