1

event.preventDefault() に問題があります。

私がやっていることは、getJSON リクエストを送信してテーブルの本体を生成することです。したがって、次のようなものが返されます <tr><td>......</td><td>2</td></tr>................ など

それから私はそのようなテーブル本体を持っています

<table>
<tbody id="activities_list">
</tbody>
</table>

activities_list を ajax リクエストから返された値に設定しました。クリックを妨げない event.preventDefault() を除いて、すべて正常に動作しています。そのため、ユーザーがリンクをクリックすると、その URL に誘導されます。

デフォルトを防げないのはなぜですか?リンクには「HistoricActivities」というクラスがあり、これらも ajax リクエストによって生成されることに注意してください。

<script>
    $(function(){

        $('.sub_note').shorten({
            moreText: 'read more',
            lessText: 'read less',
            showChars: '100'
        }); 

        $('.HistoricActivities.dummy_his').on('click', function(event){
            //reset
            event.preventDefault();

            $('#activities_list').html('');
            var pg = getURLParameter('page', null);

            $.getJSON("ajax/loader-display-previos-calls.php", {
                    account_id: <?php echo $account_id; ?>,
                    page: pg
                },function (data) {

                    if ( ! data) 
                    return; 

                    if(data.error === false){       
                        $('#activities_list').html(data.msg); 
                    }


                }
            );
        });

    });
</script>

ご協力いただきありがとうございます。

4

5 に答える 5

3

要素は動的に生成されるため、次を使用する必要があります。

$("#activities_list").on("click", ".HistoricActivities.dummy_his", function(e) { 

    somestuff(); 
    e.preventDefault();

  }
);
于 2013-11-14T23:03:08.743 に答える
0

リンクが生成された場合は、「クリック」イベントをバインドするときに、それがすでに dom に存在し、

$('.HistoricActivities.dummy_his')

実際に選択します。昔ながらのカップル

alert('someone clicked me');

十分なはずです。

于 2013-11-14T22:56:50.930 に答える
0

私はついにそれを理解しました....これが私がやったことです。

ajax リクエストを行う再帰関数を作成しました。

次に、リンクがクリックされたときに呼び出しました。

<script>

function recall(page){
    $.getJSON("ajax/loader-display-previos-calls.php", {
        account_id: <?php echo $account_id; ?>,
        page: page
    },function (data) {

        if ( ! data) 
        return; 

        if(data.error === false){       
            $('#activities_list').html(data.msg).on('click', '.HistoricActivities', function(e) { 
                e.preventDefault();
                recall(getURLParameter('page', this.href));

            });


        }


    }
).done( function(){

    $('.sub_note').shorten({
        moreText: 'read more',
        lessText: 'read less',
        showChars: '100'
    }); 
});

}



    $(function(){


        $('.HistoricActivities.dummy_his').click( function(event){

            event.preventDefault();

            $('#activities_list').html('');

            recall(1);

        });

        $(window).on('load', function(){
            $('.dummy_his').click();
        });
    });
</script>
于 2013-11-14T23:53:44.003 に答える
-1

それが実際に.prefentDefault()機能しない場合はfalse、イベント ハンドラ内に戻ることを試みることができます。それも、イベントをキャンセルする必要があります。

于 2013-11-14T22:52:06.077 に答える