今日プロジェクトに取り組んでいて、これまでに経験したことのない問題に遭遇したのでメモしておきます。
1. トリガーメソッドの説明
これは公式の説明です:
使用法:
.trigger(eventType [, extraParameters] )
eventType には、JavaScript 組み込みイベント、jQuery 追加イベント、カスタム イベントが含まれます。例:
$('#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']);
は非常に強力で、ページの初期化中によく使用されます。
2. トリガーとホバーの組み合わせ
var $search=$('#header .search'); $search.find('li').hover(function() { alert(1); },function() { alert(2); }); $search.find('li').eq(0).trigger('hover');
ホバーをトリガーできません。しかし:
var $search=$('#header .search'); $search.find('li').click(function() { alert(1); },function() { alert(2); }); $search.find('li').eq(0).trigger('click');
トリガークリックは正常です!
解決策:
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
jQuery.live() にも同じ状況が存在しますが、1.7 以降のバージョンでは live の使用は推奨されません。代わりに on() を使用してください。
以上がこの記事の全内容です。皆さんに気に入っていただければ幸いです。