jQuery.die()関数の詳細な分析

黄舟
黄舟オリジナル
2017-06-26 09:41:021450ブラウズ

die() 関数は、一致する要素にバインドされている 1 つ以上の eventseventHandling 関数を削除するために使用されます。

die() 関数は主に、live() 関数によってバインドされているイベント処理関数のブロックを解除するために使用されます。

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

構文

この関数は jQuery 1.3 で追加され、jQuery 1.7 から廃止され、jQuery 1.9 で削除されました。主に以下の 2 つの使用形態があります:

使用方法 1: jQuery 1.4.1 では、パラメーターの指定なしを新たにサポートしました。

jQueryObject.die( [ events [, handler ]] )

現在のセレクターに一致する要素の events イベントにバインドされているイベント ハンドラー関数ハンドラーを削除します。

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

jQueryObject.die( eventsMap )

使用法 1 の変形で、複数のイベント タイプの複数のイベント ハンドラーを同時に削除するために使用されます。 eventsMap はオブジェクトです。各 attribute はメソッド 1 のパラメーター イベントに対応し、値はメソッド 1 のパラメーター ハンドラーに対応します。

Parameters

jQuery.die()関数の詳細な分析

パラメータハンドラが省略された場合、要素に一致する指定されたタイプのイベントにバインドされているすべてのイベントハンドラが削除されます。

die() 関数を呼び出す現在の jQuery オブジェクトのセレクターは、 live() 関数を呼び出す jQuery オブジェクトのセレクターと一致している必要があります。

すべてのパラメータが省略された場合は、任意の要素にバインドされている任意のイベント タイプに対して、一致する要素のイベント ハンドラーを削除することを意味します。

戻り値

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

実際、die()関数のパラメータはすべてフィルタリング条件であり、すべてのパラメータ条件に一致するイベント処理関数のみが削除されます。パラメータが多いほど、より多くの条件が存在し、削除される範囲は小さくなります。

例と説明

以下の最初の HTML コードを参照してください:

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

首先,我们为上述button和元素绑定事件,然后使用die()函数解除事件绑定,相应的代码如下:

function btnClick1(){
    alert( this.value + "-1" );
}

function btnClick2(){
    alert( this.value + "-2" );
}

var $buttons = $(":button");

// 为所有button元素的click事件绑定事件处理函数btnClick1
$buttons.live( "click", btnClick1 );

// 为所有button元素的click事件绑定事件处理函数btnClick2
$buttons.live( "click", btnClick2 );

// 为所有a元素绑定click、mouseover、mouseleave事件
$("a").live( "click mouseover mouseleave", function(event){
    if( event.type == "click" ){
        alert("点击事件");
    }else if( event.type == "mouseover" ){
        $(this).css("color", "red");
    }else{
        $(this).css("color", "blue");       
    }
});


// 移除所有button元素的click事件绑定的事件处理函数btnClick2
// 点击按钮,只执行btnClick1
$buttons.die( "click", btnClick2 );


// 移除所有button元素的click事件绑定的所有事件处理函数(btnClick1和btnClick2)
// 点击按钮,不会执行任何事件处理函数
// $buttons.die("click");


//注意: $("#btn1").die("click"); 无法移除btn1的点击事件,调用die()函数的jQuery对象的选择器与调用live()函数的jQuery对象的选择器必须一致。

// 移除所有a元素的任何事件绑定的所有处理函数
// $("a").die( );

jQuery.die()関数の詳細な分析

此外,die()函数还可以只移除指定命名空间的事件绑定。

var $buttons = $(":button");

// 为所有button元素的click事件绑定事件处理函数
$buttons.live( "click.foo.bar", function btnClick1(){
    alert( "click-1" );
} );

// 为所有button元素的click事件绑定事件处理函数
$buttons.live( "click.test.bar", function btnClick1(){
    alert( "click-2" );
} );


// 移除包含命名空间foo的click事件绑定的事件处理函数
$buttons.die( "click.foo" ); // 移除click-1

//移除包含命名空间bar的click事件绑定的事件处理函数
// $buttons.die( "click.bar" ); // 移除click-1和click-2

//移除包含命名空间test的click事件绑定的事件处理函数
// $buttons.die( "click.test" ); // 移除click-2

// 移除所有button元素的click事件绑定的所有事件处理函数
// $buttons.die("click"); // 移除click-1和click-2

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

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