ホームページ > 記事 > ウェブフロントエンド > クリックを使用してjQueryによってバインドされたイベントが無効なのはなぜですか?
jqueryclickを使用したイベントのバインドは無効です
$(this).children(":last").prev().after("<div class='bounty-add'><a target='_blank' href='bounties.php#/p=add&XID=" + playerId + "'>[Bounty]</a></div>"); $(this).children(":last").prev().after("<div class='info-add'><a href='#'>[Refresh]</a></div>"); $("div.bounty-add").css(addStyle); $("div.info-add").css(addStyle); $(this).children(":last").prev().children("a").click(function() { alert("Hello"); });
関連する基本的なコードは上記の通りでスムーズに要素を取得できますが、Chromeの「Elements」ではバインドされたクリックイベントが無効です。 「ツール」「イベント リスナー」でも有効なバインディングが見つかりませんでした。
上記の基本コードで追加された DOM はすべて有効です。外側の層は 2 つのループ ですが、バインディング ステップを含むすべてのコードはスムーズに実行できるはずです。実行が完了しても a 要素をクリックしても無効となり、バインドされた関数が見つかりません。 。 。 。 。 。 。
$(this).children(":last").prev().children("a").on("click",function() { alert("Hello"); });
onも試してみましたがダメでした この2つは基本的に同じでしょうか?
a 要素自体にはクリック可能な 属性 があるため、クリック後も元のイベント (href=‘#’ など) に応答し、アドレス バーの末尾に # が追加されます。 。 。 。元のイベントが後から追加したイベントを上書きしてしまうからでしょうか? 。 。 。 。 。
以前のバインディングは
$(this).children(":last").prev().children("a").on("click",function() { alert("Hello"); });
通常のクリックバインディングと同じでした
このようにバインドしてみてください
$(this).on("click",".info-add a",function() { alert("Hello"); });
要素は動的に生成されていますか?
その場合は、ライブ バインディングまたはデリゲート バインディングを使用してください
ライブ jquery1.9 は削除されました。これは、要素が見つからない、またはバインドできないということではなく、バインド後に無効になるということです。
クリックリスナーにも含まれる a 要素を p 要素に直接変更しましたが、どうしても alter("hello"); がトリガーされません。 。 。 。 。 。
まず、firebugを使用して、ページにスクリプト エラーがあるかどうかを確認します
もう一度、コードで a 要素が見つかったことを確認します
最後に。
$(document).on("click",".info-add",function(){ alert("ok") })を使用できます
うまくいかない場合は、完全なコードを送ってください
以上がクリックを使用してjQueryによってバインドされたイベントが無効なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。