2

ページの読み込み後に jquery で読み込んだコードを使用するには、「.on」を使用する必要があることを理解しています。(少なくとも私はそのように機能すると思います)

だから私はそれを試しましたが、どういうわけかまったく何もしません。コンソールにもエラーはありません。

$("#forgot_password").click(function(){
  var forgot_password = '<div id="toLogin" style="cursor:pointer;">Prijava</div>'
  $("#loginPopupForm").html(forgot_password);                                       
});

$("#toLogin").on("click", function(){
    alert("Hello");
});

したがって、#forgot_password をクリックすると、最初のクリック機能が実行されます。しかし、#toLogin をクリックしても何もしません。#forgot_password をクリックしたときに jquery が読み込まれているためだと思います。

4

5 に答える 5

6

これを試して

$("#loginPopupForm").on("click", "#toLogin", function(){
    alert("Hello");
});
于 2013-04-23T12:32:36.490 に答える
1

たとえば、ページの読み込み時に存在する要素にバインドする必要があります。bodyコードを以下に示すように変更するだけです

$("body").on("click", "#forgot_password", function(){
  var forgot_password = '<div id="toLogin" style="cursor:pointer;">Prijava</div>'
  $("#loginPopupForm").html(forgot_password);                                       
});

$("body").on("click", "#toLogin", function(){
    alert("Hello");
});
于 2013-04-23T12:33:12.863 に答える
0

onを間違ったものに設定しています。あなたはそれをしたい:

$(document).on('click', '#toLogin', function() {alert('hello') });

他のクリックイベントを実行するまでIDは存在しないため、jQueryはクリックイベントを設定する要素を見つけられません。イベントを設定するには、DOM でレンダリングされた要素が必要です。

于 2013-04-23T12:33:15.340 に答える
0

問題については完全に正しいです。 on() は、実行時に既に存在する要素のみを対象としています。jQuery で必要なものは Delegated イベントと呼ばれ、Jquery doc pageで詳しく説明されています。コードの違いはわずかですが、それが本来のやり方です。

于 2013-04-23T12:35:40.893 に答える
-1

親要素を指定する必要があります

$("#toLogin").on("click","#loginPopupForm", function(){
    alert("Hello");
});

on の 2 番目の引数で

于 2013-04-23T12:36:51.437 に答える