0

良い一日。

データからボタンを取得します.post

コード:

$(function () {

    $('.f1_start').on('click', function () {
        alert('hello');
    });

    $('.button_test').on('click', function () {
        $.post("update.php", {
                    ...
            },
            function (data) {
                    ...
                $('#div_test').html('').html(data); 
                //we get <button class="f1_start">test</button>
            });


    });

});

Id の divbutton_testからクラスを含む要素ページをクリックすると、クラスのロード ボタンが表示されます。ただし、最初のスクリプト はこのボタンでは機能しません。.postdiv_testf1_start$('.f1_start').on('click',function(){

のロード時にスクリプトが機能しない理由を教えてください.post

4

7 に答える 7

1

f1_start のクリックを宣言すると、そこにないため、成功時に宣言する必要があります。

<script>
$(function(){



$('.button_test').on('click',function(){
$.post("update.php", {
...
},
function(data){
...
$('#div_test').html('');.html(data); //we get <button class="f1_start">test</button>
$('.f1_start').on('click',function(){
alert('hello');
});
});


});

});
</script>
于 2013-07-09T10:32:18.513 に答える
1

使用していますがon、適切に委任していません。動的要素の挿入時にドキュメントに存在する静的親コンテナーに常に委任する必要があります

これを試して

 $('#div_test').on('click','.f1_start',function(){
   alert('hello');
  });

委任されたイベントの詳細を読むためのリンク

于 2013-07-09T10:32:36.040 に答える
1

.on そのように使用すると、一度だけ登録されます。常に存在することがわかっているオブジェクトに対してイベントを登録できます。

含まれている div などの追加のコンテキストを与えると、よりうまく機能する可能性があります。

$('#div_test').on('click', '.f1_start', function(){
  //.....
});

コールバック内にある現在の .on イベントを登録することもできます。これは同じ効果があり、わずかに効率的ですが、一般的には、必要なイベントのみを登録する適切な公開モジュール パターンを使用して行う方が適切です。

また、別の注意として、htmlを空にしてから設定する必要はありません。設定すると置き換えられます。

于 2013-07-09T10:33:22.537 に答える