ホームページ >ウェブフロントエンド >jsチュートリアル >jqueryのtrigger()がホバーevent_jqueryをトリガーできない問題の解決策

jqueryのtrigger()がホバーevent_jqueryをトリガーできない問題の解決策

WBOY
WBOYオリジナル
2016-05-16 16:00:251193ブラウズ

今日プロジェクトに取り組んでいて、これまでに経験したことのない問題に遭遇したのでメモしておきます。

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() を使用してください。

以上がこの記事の全内容です。皆さんに気に入っていただければ幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。