ホームページ >ウェブフロントエンド >jsチュートリアル >jQuery_jquery のライブ メソッドとバインド メソッドの違いを深く理解する
jq を介してレイヤーとオブジェクトを追加する場合は、live() を使用する必要があることに注意してください。他のものは機能しません
live の欠点は、実行後にスペースが解放されないことです。bind() を使用しすぎると、
をクリックした後にスペースが解放されます。違い 1:
ここをクリック
単純なクリック イベントをこの要素にバインドできます:
$('.clickme').bind('click', function() {
$('body').append('
別のターゲット
');
});
この新しい要素はセレクター「.clickme」にも一致しますが、この要素は .bind() を呼び出した後に追加されるため、この要素をクリックしても効果はありません。
.live() は、この状況に対するメソッドを提供します。次のようにクリック イベントをバインドすると:
$('.clickme').live('click', function() {
alert("ライブ ハンドラーが呼び出されました。");
});
$('body').append('
別のターゲット
');
次に、新しく追加された要素をクリックすると、引き続きイベント ハンドラー関数をトリガーできます。
違い 2: (1) jQuery 1.3 では、bind メソッドは任意の JavaScript イベントをバインドできますが、live メソッドは jQuery 1.3 の click、dblclick、keydown、keypress、keyup、mousedown、mousemove、mouseout、mouseover、および Mouseup のみをサポートします。 1、focus および blue イベントもサポートされています (focusin および focusout にマップされます。これらはより適切であり、バブルアップする可能性があります)。さらに、jQuery 1.4.1 では、ホバー (「mouseenter Mouseleave」にマッピング) もサポートされます。
(2) live() は、DOM トラバーサルで見つかった要素を完全にはサポートしません。代わりに、常にセレクターの直後に .live() メソッドを使用する必要があります。
(3) 要素がライブ メソッドを使用してイベントをバインドする場合、イベントの配信またはバブリングを防止したい場合は、関数で stopPropagation() を呼び出すだけではイベントの配信を防止できません。泡立つ