0

数週間前、私は自分のプロジェクトに取り組んでいて、テーブルの行をクリック可能にするコードをいくつか書きました (そこにいて、それを行いました)。このコードは、以前は問題なく使用されていました。コードを機能させるために1日が無駄になりました(以前に何度も実行したことがありますが)-機能させるために試みたもののいくつかは、-すべてのIDをクラスに変更する、b-コードを下から移動することでしたスクリプト セクションを先頭に移動、c - 変数の名前を変更、d - 変数の前に「var」を追加、変数の前から var を減算、e - すべての一重引用符を二重引用符に変更、すべての二重引用符を一重引用符に変更、f - 変更テーブルの名前、g- 行の代わりにテーブルをクリックしてみてください。h - テーブルを div に入れたり、テーブルを div から取り出したりします。

何も成功しなかったので、最後の手段として、夜遅くに .click を .on(click - そして驚きの驚き - すべてうまくいきました.

昨日も同じことが起こりましたが、a - hを実行する代わりに、 .click を on(click.

2 つのコード スニペットを次に示します。

$("#mdtable tr").click(function() { 
    var localmdid = $(this).find("#mdid").html();
    alert("mdid =" + localmdid);
});

$(document).on('click', '#mdtable tr', function(e) {
    var localmdid = $(this).find("#mdid").html();
    alert("mdid =" + localmdid);
           });

上のものは決して機能せず、下のものは常に機能します(私はそれらをコメントインおよびコメントアウトします)。

これは、問題なく動作する別のページのコード スニペットです。

$("#patienttable tr").click(function() {
       var passthis = $(this).find("#localid").html();
       $.post("php/setsessionvariable.php",
              {sessionval: passthis},
              function(e) {window.location.href = "root.php"}
              );
});

私はjQueryのドキュメントを読みましたが、.click関数は何らかの形で.on(clickに直接関連しているため、私にとっては、1つが機能する場合は他の機能が機能するはずです。

初心者なので、より優れたプログラマーになりたいと思っています。私のコードは .on(click で動作しますが、.clicks が動作しない理由を知りたいです (知的な演習)。

だから私の質問は:

  1. .click と .on(click は本当に関連していますか?

  2. クリックスニペットに欠けている明らかなものがあり、機能しませんか?

  3. この問題についてこれとは別の方法はありますか?

繰り返しますが、事前に感謝します

4

1 に答える 1

5

はその.click時点で存在する要素にクリック イベントをバインドしますがDOMon()はイベントを委任し、後で動的に追加されるクリック (イベント) をバインドします。

委任されたイベント

委任されたイベントには、後でドキュメントに追加される子孫要素からのイベントを処理できるという利点があります。委任されたイベント ハンドラーがアタッチされた時点で存在することが保証されている要素を選択することで、委任されたイベントを使用して、イベント ハンドラーを頻繁にアタッチおよび削除する必要をなくすことができます

于 2013-07-16T13:56:45.657 に答える