jQuery.trigger()関数の詳しい説明

巴扎黑
巴扎黑オリジナル
2017-07-08 11:13:282434ブラウズ

trigger() 関数は、一致する各要素で指定されたタイプのイベントをトリガーするために使用されます。

さらに、イベントがトリガーされたときに、追加のパラメーターを イベント処理 関数に渡すこともできます。

この関数を使用すると、要素にバインドされたイベント処理関数の実行を手動でトリガーでき、また要素のデフォルトの動作の実行もトリガーされます。

フォーム要素 ff9c23ada1bcecdd1a0fb5d5a0f18437 を例に挙げると、trigger("submit") を使用すると、フォームにバインドされた送信イベントをトリガーし、フォーム送信イベントのデフォルトの動作であるフォーム送信操作も実行できます。

ネチズン @Feiyang からのフィードバックによると、リンク タグ 3499910bf9dac5ae3c52d5ede7383485 のトリガー (「クリック」) は特殊なケースであり、リンク クリック イベントのデフォルトの動作 (対応するリンクにジャンプする操作) はトリガーされません。関連する詳細を表示するには、ここをクリックしてください。

jQuery 1.3 以降、trigger() 関数によってトリガーされるイベントは、バブリングして DOM ツリーに渡すことができるイベント バブリングもサポートします。

この関数はjQueryオブジェクト(インスタンス)に属します。

構文

trigger() 関数には主に次の 2 つの使用形式があります:

使用方法 1:

jQueryObject.trigger(events [, extraArguments])

一致する各要素イベントで指定されたタイプ (イベント) をトリガーします。また、追加のパラメーター (extraArguments) をイベント処理関数に渡すことができます。

使用法 2: jQuery 1.3 では、この使用法が新たにサポートされました。

jQueryObject.trigger(eventObject [, extraArguments ] )

は、指定されたイベント処理関数によって渡される Event オブジェクト (eventObject) です。これは、対応するイベント処理関数の実行をトリガーするために使用され、追加のパラメーターを渡すことができます。イベント処理関数 (extraArguments) に渡します。

パラメータ

パラメータの説明

events 文字列型は、イベントのタイプとオプションの名前空間 (「click」、「focus」、「keydown.myPlugin」など) を指定します。

extraArguments オプション/オブジェクト型は、イベント処理関数によって渡される追加のパラメーターです。複数のパラメータを渡したい場合は、配列として渡してください。

eventObject オブジェクト タイプは Event オブジェクトで、オブジェクトに渡されるイベント処理関数をトリガーするために使用されます。

trigger() 関数は、実行をトリガーするイベント処理関数にデフォルトのパラメーターを渡します。これは、現在のイベントを表す Event オブジェクトです。

パラメータ extraArguments は、イベント処理関数にさらに追加のパラメータを渡すために使用されます。 extraArguments が配列形式の場合、各要素は 関数の引数 として機能します。

戻り値

trigger()関数の戻り値はjQuery型で、現在のjQueryオブジェクトそのものを返します。

例と説明

次の初期 HTML コードを参照してください:

<input id="btn1" type="button" value="点击1" />
<input id="btn2" type="button" value="点击2" />
<a id="a1" href="#">CodePlayer</a>
<div id="log"></div>

まず、イベントを上記のボタンと 3499910bf9dac5ae3c52d5ede7383485 要素にバインドし、trigger() 関数を使用してイベントを直接トリガーします。対応するコードは次のとおりです。

var $log = $("#log");
function handler( event, arg1, arg2 ){
    var html = &#39;<br>触发元素#&#39; + this.id + &#39;的[&#39; + event.type +&#39;]事件,额外的函数参数为:&#39; + arg1 + &#39;, &#39; + arg2;
    $log.append( html );
}
var $buttons = $(":button");
// 为所有button元素的click事件绑定事件处理函数
$buttons.bind( "click", handler );
// 为所有a元素的click、mouseover、mouseleave事件绑定事件处理函数
$("a").bind( "click mouseover mouseleave", handler );
// 触发所有button的click事件
$buttons.trigger("click"); 
/*(追加文本)
触发元素#btn1的[click]事件,额外的函数参数为:undefined, undefined
触发元素#btn2的[click]事件,额外的函数参数为:undefined, undefined
*/
$("#btn1").trigger("click", "CodePlayer");
/*(追加文本)
触发元素#btn1的[click]事件,额外的函数参数为:CodePlayer, undefined
*/
// arg1 = "张三", arg2 = 20
$("a").trigger("mouseover", ["张三", 20 ] );
/*(追加文本)
触发元素#a1的[mouseover]事件,额外的函数参数为:张三, 20
*/
$("a").trigger("mouseleave", { name: "张三", age: 18 } );
/*(追加文本)
触发元素#a1的[mouseleave]事件,额外的函数参数为:[object Object], undefined
*/

trigger() 関数は、イベント処理関数に渡された Event オブジェクトに基づいて、対応するイベントをトリガーすることもできます。

var $btn1 = $("#btn1");
// 为btn1元素的click事件绑定事件处理函数
$btn1.bind( "click", function(event){
    alert("click1");    
});
// 为btn1元素的click事件绑定事件处理函数
// 如果传入了一个有效的额外参数,则再次触发click
$btn1.bind( "click", function(event, arg1){
    alert("click2");
    if(arg1)
        $(this).trigger( event );
});
// $btn1.trigger( "click" ); // 调用一次click1、调用一次click2
$btn1.trigger( "click", true ); // 调用两次click1、调用两次click2

さらに、trigger() 関数は、指定された名前空間を含むイベントのみをトリガーすることもできます (名前空間は 1.4.3 以降でのみサポートされます)。

りー

以上がjQuery.trigger()関数の詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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