Je travaillais sur un projet aujourd'hui et j'ai rencontré un problème que je n'avais jamais rencontré auparavant, alors j'en ai pris note.
1. Explication de la méthode de déclenchement
Voici l'explication officielle :
Utilisation :
.trigger( eventType [, extraParameters] )
Le eventType comprend des événements javascript intégrés, des événements ajoutés par jQuery et des événements personnalisés. Par exemple :
$('#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']);
est très puissant et est souvent utilisé lors de l'initialisation de la page.
2. Le déclencheur rencontre le survol
var $search=$('#header .search'); $search.find('li').hover(function() { alert(1); },function() { alert(2); }); $search.find('li').eq(0).trigger('hover');
Le survol ne peut pas être déclenché. Mais :
var $search=$('#header .search'); $search.find('li').click(function() { alert(1); },function() { alert(2); }); $search.find('li').eq(0).trigger('click');
Le clic de déclenchement est normal !
Solution :
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
La même situation existe avec jQuery.live(), mais l'utilisation de live n'est pas recommandée dans les versions postérieures à 1.7. Utilisez plutôt on().
Ce qui précède représente l’intégralité du contenu de cet article, j’espère que vous l’aimerez tous.