ホームページ  >  記事  >  ウェブフロントエンド  >  jQuery が要素を動的に追加するときにバインディング イベントをトリガーできない場合の対処方法

jQuery が要素を動的に追加するときにバインディング イベントをトリガーできない場合の対処方法

php中世界最好的语言
php中世界最好的语言オリジナル
2018-04-23 15:56:341752ブラウズ

今回はjQueryが動的に要素を追加する際にトリガーできないバインディングイベントの対処方法を紹介します。実際のケースを見てみましょう。 。 私は最近問題に遭遇しました。つまり、jquery を使用して要素を動的に追加した後、動的に追加された要素がイベントをトリガーできないことがわかりました。その後、インターネットでいくつかの情報を確認したところ、次のように対処する必要があることがわかりました。 まず、エラー コードについて話しましょう:

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title></title>
  <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="external nofollow" >
  <script src="//cdn.bootcss.com/jquery/1.8.3/jquery.min.js"></script>
  <script>
    $(document).ready(function(){
//这里是动态添加元素
      $(".add").click(function(){
        var btn = $("<button class=&#39;newBtn btn btn-default&#39;>新按钮</button>");
        $("body").append(btn);
      })<br><br>//这里是为添加的元素添加事件
      $(".newBtn").click(function(){
        alert("这里是新添加的元素触发的事件");
      })
    })
  </script>
</head>
<body>
<button class=" add btn btn-default">添加按钮</button>
</body>
</html>

これが私の解決策です

方法 1: ライブ イベントをバインドする (ライブ イベントはjquery1.9 でのみ利用可能。以下のバージョンでのみサポートされており、それ以降のバージョンではサポートされていません)。

$(".newBtn").live("click",function(){
///jquery 1.9(不包括1.9)以下可以
  alert('这里是动态元素添加的事件');
})

方法 2: on() イベント バインディングを使用する

$("body").on("click", ".newBtn", function() {
   alert('这里是动态元素添加的事件');
});
//这里的ParentEle是 thisEle的父辈元素或者祖先元素,ParentEle可以是document,也可以是body等。
//注意:如果此时调用的函数是外部定义好的函数,那在调用的时候不要加(),不然会跳过点击事件直接触发函数
$("body").on("click", ".newBtn",aa );
function aa(){
    alert('这里是动态元素添加的事件');
}
この記事のケースを読んだ後は、この方法を習得したと思います。さらに興味深い情報については、PHP 中国語に関する他の関連記事に注目してください。 Webサイト! ($(ParentEle).on("click",".thisEle",function(){})推奨読書:

jQuery バージョンアップの注意事項とは

jQuery プラグインのパッケージ化手順の詳細な説明

以上がjQuery が要素を動的に追加するときにバインディング イベントをトリガーできない場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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