ホームページ ウェブフロントエンド jsチュートリアル Jquery delegate()、bind()、live()、on() バインディング イベント メソッドの詳細な説明

Jquery delegate()、bind()、live()、on() バインディング イベント メソッドの詳細な説明

Jun 26, 2017 am 10:02 AM
bind jquery live バインディング

前書き

プロジェクトでは dom 要素の追加や削除に jquery を使用することが多いため、この記事が今後の参考になるように、bind、live、delegate、on の違いを簡単にまとめておきます。今後、庭の友人たちを助けてください。記事内に不適切な点があれば、すぐに本題に入りましょう。

bind()

簡単な説明

bind() 1つ以上のイベントハンドラを一致する要素に追加します。

使い方

$(selector).bind(event,data,function)

イベント必須項目; click、dblclick など、要素に追加された 1 つ以上のイベント

単一イベント処理: 例: $("click",data) ,関数);

どこか

...}) イベントは、別のタイプで複数のイベントを処理するのに適しています。関数をイベントに個別にバインドできます。

機能: 必須; バインディングイベントが発生したときに実行する必要がある関数


<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>jquery中bind()绑定事件方式</title>
    <style type="text/css">
        .container
        {
            width: 300px;
            height: 300px;
            border: 1px #ccc solid;
            background-color: Green;
        }
        .btn-test
        {
            border: 1px #ccc solid;
            padding: 5px 15px;
            cursor: pointer;
        }
    </style>
    <script src="js/jquery-1.8.0.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {

            /*********添加单个事件处理*********/

            $(".btn-test").bind("click", function () {
                //显示隐藏div
                $(".container").slideToggle();
            });

            /********添加多个事件处理********/

            //空格相隔方式
            $(".btn-test").bind("mouseout click", function () {
                //显示隐藏div
                $(".container").slideToggle();
            });

            //大括号替代方式
            $(".btn-test").bind({
                "mouseout": function () {
                    alert("这是mouseout事件!");
                },
                "click": function () {
                    $(".container").slideToggle();
                }
            });

            /********删除事件处理********/
            $(".btn-test").unbind("click");

        });
    </script>
</head>
<body>
    <input type="button" value="按钮" class="btn-test" />
    <div class="container">
    </div>
</body>
</html>
ログイン後にコピー
コードを表示

該当するJqueryバージョン

ただし、公式ウェブサイトによると、j binding() 関数なのでの後に推奨されますquery1.7 バージョン 代わりに on() を使用してください。
live()

簡単な説明

live() 現在または将来の一致要素 1 つ以上のイベント ハンドラーを追加します。

$(selector) イベント

データ ,function) イベント: click、dblclick などの 1 つ以上のイベントが必要です。

単一イベント処理:例: $(selector).live("click",data,function);

マルチイベント処理: 1. など、複数のイベントをスペースで区切ります。 $(セレクター).

live("click dbclick Mouseout",data,function); 2.中括弧を使用する

$(selector).

live({event1:function、event2:function、...}などの複数のイベントを柔軟に定義します。 rist rigid rigidブラケットに積極的に取り付けられています。同じ関数のバインディング関数を呼び出す複数のイベントに適していますそれは渡す必要があります

  function:必需;当绑定事件发生时,需要执行的函数;

举例说明

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>jquery中live()绑定事件方式</title>
    <style type="text/css">
        .container
        {
            width: 300px;
            height: 300px;
            border: 1px #ccc solid;
            background-color: Green;
        }
        .btn-test
        {
            border: 1px #ccc solid;
            padding: 5px 15px;
            cursor: pointer;
        }
    </style>
    <script src="js/jquery-1.8.0.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {

            /*********添加单个事件处理*********/

            $(".btn-test").live("click", function () {
                //显示隐藏div
                $(".container").slideToggle();
            });

            
            /********添加多个事件处理********/

            //空格相隔方式
            $(".btn-test").live("mouseout click", function () {
                //显示隐藏div
                $(".container").slideToggle();
            });

            //大括号替代方式
            $(".btn-test").live({
                "mouseout": function () {
                    alert("这是mouseout事件!");
                },
                "click": function () {
                    $(".container").slideToggle();
                }
            });

            /********删除事件处理********/
            $(".btn-test").die("click");
            
        });
    </script>
</head>
<body>
    <input type="button" value="按钮" class="btn-test" />
    <div class="container">
    </div>
</body>
</html>
ログイン後にコピー

View Code

适用Jquery版本

  jquery1.9版本以下支持,jquery1.9及其以上版本删除了此方法,jquery1.9以上版本用on()方法来代替。

delegate()

简要描述

  delegate() 为指定的元素(被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。使用 delegate() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)。

使用方式 

  $(selector).delegate(childSelector,event,data,function)

  childSelector: 必需项;需要添加事件处理程序的元素,一般为selector的子元素;

  event:必需项;添加到元素的一个或多个事件,例如 click,dblclick等;

      单事件处理:例如 $(selector).delegate(childselector,"click",data,function);

      多事件处理:1.利用空格分隔多事件,例如 $(selector).delegate(childselector,"click dbclick mouseout",data,function);

            2.利用大括号灵活定义多事件,例如 $(selector).delegate(childselector,{event1:function, event2:function, ...}) 

            3.空格相隔方式:绑定较为死板,不能给事件单独绑定函数,适合处理多个事件调用同一函数情况;

             大括号替代方式:绑定较为灵活,可以给事件单独绑定函数;   

  data:可选;需要传递的参数;

  function:必需;当绑定事件发生时,需要执行的函数;

举例说明

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>jquery中delegate()绑定事件方式</title>
    <style type="text/css">
        .container
        {
            width: 300px;
            height: 300px;
            border: 1px #ccc solid;
            background-color: Green;
        }
        .btn-test
        {
            border: 1px #ccc solid;
            padding: 5px 15px;
            cursor: pointer;
        }
    </style>
    <script src="js/jquery-1.8.0.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {

            /***********单元素添加单事件***********/

            //按钮绑定单击事件 实现div的显示隐藏
            $(".header").delegate("#btn-test1", "click", function () {
                $(".container").slideToggle();
            });


            /***********单元素添加多事件***********/

            //空格相隔方式
            $(".header").delegate("#btn-test1", "click mouseout", function () {
                $(".container").slideToggle();
            });

            //大括号替代方式
            $(".header").delegate("#btn-test1", {
                "mouseout": function () {
                    alert("这是mouseout事件!");
                },
                "click": function () {
                    $(".container").slideToggle();
                }
            });


        });
    </script>
</head>
<body>
    <div class="header">
        <input type="button" value="按钮1" class="btn-test" id="btn-test1" />
        <input type="button" value="按钮2" class="btn-test" id="btn-test2" />
    </div>
    <div class="container">
    </div>
</body>
</html>
ログイン後にコピー

View Code

适用Jquery版本

jque ry1.4.2 以上; on()簡単な説明

on()

指定された要素に1つ以上のイベントハンドラーを追加し、これらのイベントが発生したときに実行する関数を指定します。 on() メソッドを使用するイベント ハンドラーは、現在または将来の要素 (スクリプトによって作成された新しい要素など) に対して動作します。 使い方

$(selector).on(even t,childselector,data,function)

イベント:

必須; click、dblclick など、要素に追加された 1 つ以上のイベント 単一イベント処理: 例:

$(selector).on("click",childselector,data ,function);

複数のイベントの処理: 1. 複数のイベントをスペースで区切ります。 (" [dbclick mouseout "、childseLetor、data、function)をクリックします。

            2.利用大括号灵活定义多事件,例如 $(selector).on({event1:function, event2:function, ...},childselector); 

            3.空格相隔方式:绑定较为死板,不能给事件单独绑定函数,适合处理多个事件调用同一函数情况;

             大括号替代方式:绑定较为灵活,可以给事件单独绑定函数; 

  childSelector: 可选;需要添加事件处理程序的元素,一般为selector的子元素;  

  data:可选;需要传递的参数;

  function:必需;当绑定事件发生时,需要执行的函数;

举例说明

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>jquery中on()绑定事件方式</title>
    <style type="text/css">
        .container
        {
            width: 300px;
            height: 300px;
            border: 1px #ccc solid;
            background-color: Green;
        }
        .btn-test
        {
            border: 1px #ccc solid;
            padding: 5px 15px;
            cursor: pointer;
        }
    </style>
    <script src="js/jquery-1.8.0.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {

            /*********添加单个事件处理*********/

            $(".header").on("click", ".btn-test", function () {
                //显示隐藏div
                $(".container").slideToggle();
            });

            /********添加多个事件处理********/

            //空格相隔方式
            $(".header").on("mouseout click", ".btn-test", function () {
                //显示隐藏div
                $(".container").slideToggle();
            });

            //大括号替代方式
            $(".header").on({
                "mouseout": function () {
                    alert("这是mouseout事件!");
                },
                "click": function () {
                    $(".container").slideToggle();
                }
            }, ".btn-test");

            //删除事件
            $(".header").off("click", ".btn-test");

        });
    </script>
</head>
<body>
    <div class="header">
        <input type="button" value="按钮" class="btn-test" />
    </div>
    <div class="container">
    </div>
</body>
</html>
ログイン後にコピー


View Code

适用Jquery版本

jquery1.7

以上。 ry1 .7 バージョンが登場した後、 を使用してbind() を置き換えます。と live() バインディング イベント メソッドメソッド 同じ点: 1. どちらも単一要素と複数のイベントのバインディングをサポートします。 2.すべてのイベントは、イベント バブリングを通じてイベント応答のためにドキュメントに渡されます。

比较和联系:

1.bind()函数只能针对已经存在的元素进行事件的设置;但是live(),on(),delegate()均支持未来新添加元素的事件设置;演示代码如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>jquery中四种方式给未来元素设置事件</title>
    <style type="text/css">
        .container
        {
            width: 300px;
            height: 300px;
            border: 1px #ccc solid;
            background-color: Green;
        }
        .btn-test
        {
            border: 1px #ccc solid;
            padding: 5px 15px;
            cursor: pointer;
        }
    </style>
    <script src="js/jquery-1.8.0.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {

            //利用bind()方法,给P标签设置click方法   ======失败 没有任何反应=======
            $(".container p").bind("click", function () {
                alert("bind()添加单击事件成功!");
            });

            //利用live()方法.给P标签设置click方法   =======成功调用方法============
            $(".container p").live("click", function () {
                alert("live()添加单击事件成功!");
            });

            //利用delegate()方法.给P标签设置click方法  =======成功调用方法============
            $(".container").delegate("p", "click", function () {
                //显示隐藏div
                alert("delegate()添加单击事件成功!");
            });

            //利用on()方法.给P标签设置click方法  =======成功调用方法============
            $(".container").on("click", "p", function () {
                //显示隐藏div
                alert("on()添加单击事件成功!");
            });

            //按钮添加P标签
            $(".btn-test").click(function () {
                $(".container").append("<p>这是新增的段落!</p>");
            });
        });
    </script>
</head>
<body>
    <input type="button" class="btn-test" value="添加元素" />
    <div class="container">
    </div>
</body>
</html>
ログイン後にコピー

 

2.bind()関数をjquery1.7以前と比較したものですバージョン 1.7 のリリース後、公式は、bind() の使用を推奨しなくなりました。これもバージョン 1.7 で新しく追加された関数です

バージョン 1.9 で削除された live() 関数を置き換えるために使用されます。

3. live() 関数は delegate() 関数に似ていますが、実行速度、柔軟性、CSS セレクター の点で、live() 関数は delegate() よりも劣ります。応援

4.bind() は Jquery のすべてのバージョンをサポートします; live() は jquery1.4.2 以降をサポートします; on() は jquery1.7 以降をサポートします。 概要 プロジェクト内で参照しているjqueryのバージョンが低い場合上記は単なる私の個人的な意見です。異なるアイデアがある場合は、お気軽に共有してください。

以上がJquery delegate()、bind()、live()、on() バインディング イベント メソッドの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

BTCC チュートリアル: BTCC 取引所で MetaMask ウォレットをバインドして使用する方法は? BTCC チュートリアル: BTCC 取引所で MetaMask ウォレットをバインドして使用する方法は? Apr 26, 2024 am 09:40 AM

MetaMask (中国語ではリトル フォックス ウォレットとも呼ばれます) は、無料で評判の高い暗号化ウォレット ソフトウェアです。現在、BTCC は MetaMask ウォレットへのバインドをサポートしており、バインド後は MetaMask ウォレットを使用してすぐにログイン、値の保存、コインの購入などが可能になり、初回バインドで 20 USDT のトライアル ボーナスも獲得できます。 BTCCMetaMask ウォレットのチュートリアルでは、MetaMask の登録方法と使用方法、および BTCC で Little Fox ウォレットをバインドして使用する方法を詳しく紹介します。メタマスクウォレットとは何ですか? 3,000 万人を超えるユーザーを抱える MetaMask Little Fox ウォレットは、現在最も人気のある暗号通貨ウォレットの 1 つです。無料で使用でき、拡張機能としてネットワーク上にインストールできます。

小紅書にサブアカウントをバインドするにはどうすればよいですか?アカウントが正常かどうかはどのように確認されますか? 小紅書にサブアカウントをバインドするにはどうすればよいですか?アカウントが正常かどうかはどのように確認されますか? Mar 21, 2024 pm 10:11 PM

今日の情報爆発の時代において、個人のブランドや企業イメージの構築はますます重要になっています。中国を代表するファッションライフ共有プラットフォームとして、Xiaohongshu は多くのユーザーの注目と参加を集めています。影響力を拡大し、コンテンツ配信の効率化を図りたいユーザーにとって、サブアカウントの紐付けは有効な手段となっています。では、Xiaohongshu はどのようにしてサブアカウントをバインドするのでしょうか?アカウントが正常かどうかを確認するにはどうすればよいですか?この記事では、これらの質問に詳しく答えます。 1.Xiaohongshu でサブアカウントをバインドするにはどうすればよいですか? 1. メインアカウントにログインします。まず、Xiaohongshu メインアカウントにログインする必要があります。 2. 設定メニューを開きます。右上隅の「Me」をクリックし、「設定」を選択します。 3. アカウント管理に入る: 設定メニューで、「アカウント管理」または「アカウントアシスタント」オプションを見つけて、クリックします。

Toutiao で Douyin をバインドする手順と方法 Toutiao で Douyin をバインドする手順と方法 Mar 22, 2024 pm 05:56 PM

1. Toutiaoを開きます。 2. 右下隅の「My」をクリックします。 3. [システム設定]をクリックします。 4. [アカウントとプライバシーの設定]をクリックします。 5. [Douyin]の右側のボタンをクリックしてDouyinをバインドします。

Cainiao アプリを Pinduoduo にバインドするにはどうすればよいですか? Cainiao Wrap を Pinduoduo プラットフォームに追加するにはどうすればよいですか? Cainiao アプリを Pinduoduo にバインドするにはどうすればよいですか? Cainiao Wrap を Pinduoduo プラットフォームに追加するにはどうすればよいですか? Mar 19, 2024 pm 02:30 PM

Cainiao アプリは、さまざまな物流情報を提供できるプラットフォームです。ここの機能は非常に強力で使いやすいです。物流関連の問題があれば、ここで解決できます。とにかく、それはあなたに 1 つをもたらすことができます-stopサービスはすべてを時間内に解決できます。速達の確認、速達の受け取り、速達の発送などはすべて問題なく行われます。さまざまなプラットフォームと連携しており、すべての情報を照会できます。しかし、場合によっては、 Pinduoduo で購入した商品は物流情報を表示できない場合がありますが、実際には、これを実現するには手動で Pinduoduo をバインドする必要があります。具体的な方法は以下に整理されており、誰でも見ることができます。 Cainiao を Pinduoduo アカウントにバインドする方法: 1. Cainiao APP を開き、メインページに移動します。

jQueryでPUTリクエストメソッドを使用するにはどうすればよいですか? jQueryでPUTリクエストメソッドを使用するにはどうすればよいですか? Feb 28, 2024 pm 03:12 PM

jQueryでPUTリクエストメソッドを使用するにはどうすればよいですか? jQuery で PUT リクエストを送信する方法は、他のタイプのリクエストを送信する方法と似ていますが、いくつかの詳細とパラメータ設定に注意する必要があります。 PUT リクエストは通常​​、データベース内のデータの更新やサーバー上のファイルの更新など、リソースを更新するために使用されます。以下は、jQuery の PUT リクエスト メソッドを使用した具体的なコード例です。まず、jQuery ライブラリ ファイルが含まれていることを確認してから、$.ajax({u

Cainiao APP を Pinduoduo にバインドする方法 Cainiao APP を Pinduoduo にバインドする方法 Cainiao APP を Pinduoduo にバインドする方法 Cainiao APP を Pinduoduo にバインドする方法 Mar 19, 2024 pm 05:16 PM

Cainiao Wrap を使用するときに Pinduoduo をバインドする方法をご存知ですか? Cainiao Wrap アプリの公式バージョンでは、このプラットフォーム上の Pinduoduo の物流情報の一部が自動的に同期されません。注文番号をコピーするか、携帯電話で確認するだけです。速達情報がある場合。もちろん、これらはすべて手動で完了する必要があります。さらに詳しく知りたい場合は、エディターに来て確認してください。 Cainiao APP を Pinduoduo にバインドする方法 1. Cainiao APP を開き、メイン ページの左上隅にある「パッケージ ガイド」をクリックします。 2. インターフェイスには、多くのショッピング サイトがあり、アカウントをバインドできます。 3. クリックして他の電子商取引プラットフォームをインポートします。 4. ユーザー認証: Pinduoduo をクリックしてインターフェイスに移動します。

Xiaomi 車アプリを充電パイルデバイスにバインドする方法 Xiaomi 車アプリを充電パイルデバイスにバインドする方法 Apr 01, 2024 pm 06:52 PM

Xiaomi が発売した最新の Mi su7 モデルカーは、さまざまなホット検索リストを独占しています。車を購入したいと考えている多くのユーザーが、購入のために Xiaomi su7 モデルカーを選択しました。では、Xiaomi 車アプリを使用して、選択後に車をバインドするにはどうすればよいですか?充電に家庭用充電パイルを使用する場合は、このチュートリアル ガイドで詳しく説明しますので、お役に立てれば幸いです。まず、Xiaomi モバイル アプリを開き、右下隅にある [My] ボタンをクリックすると、My インターフェイスで、ホーム充電パイルのオプションが表示され、充電パイルをバインドするページに入った後、スキャン コードをクリックします下のボタンをクリックして、充電パイルの QR コードをスキャンします。QR コードを使用して、充電パイルをアプリにバインドできます。

jQuery のヒント: ページ上のすべての a タグのテキストをすばやく変更する jQuery のヒント: ページ上のすべての a タグのテキストをすばやく変更する Feb 28, 2024 pm 09:06 PM

タイトル: jQuery ヒント: ページ上のすべての a タグのテキストをすばやく変更する Web 開発では、ページ上の要素を変更したり操作したりする必要がよくあります。 jQuery を使用する場合、ページ内のすべての a タグのテキスト コンテンツを一度に変更する必要がある場合があります。これにより、時間と労力を節約できます。以下では、jQuery を使用してページ上のすべての a タグのテキストをすばやく変更する方法と、具体的なコード例を紹介します。まず、jQuery ライブラリ ファイルを導入し、次のコードがページに導入されていることを確認する必要があります: &lt

See all articles