0

最近、ajax を呼び出す jquery メソッドを作成する必要があるタスクに割り当てられました。レスポンスが ajax リクエストから正常に送信されたら、呼び出し要素の親 tr の後にそのレスポンス HTML コードを配置します。

私の応答 HTML では、jquery トグル関数を記述して、一部の情報を下にスライドさせ、テキストをプラスからマイナスに、またはその逆に変更しました。

しかし、それは奇妙に機能しました。ライブで追加すると、完全に機能しました。

jquery1.7を使用しています。

これが私のコードです

これはメインページのajax用です

<script type="text/javascript" >
                            $(document).ready(function() {


                                $('.loadCampaign').click(function(e) {
                                    //e.preventDefault();
                                    var campId = $(this).attr('id');
                                    var arr = campId.split('_');
                                    campId = arr[1];
                                    var parentTrId = '#campaign_tr_' + campId;
                                    var cBodyClass = campId + '-cBody';
                                    var body = $('.' + 'trView_' + campId);

                                    if (body.length) {
                                        body.remove();
                                    } else {
                                        $.ajax({
                                            //dataType: "json",
                                            url: '{{config.adminUrl}}/campaign/loadCamapaignDetails',
                                            data: {'id': campId},
                                            type: 'get',
                                            success: function(jd)
                                            {
                                                if (jd !== '0') {
                                                    $(parentTrId).after('<tr id="view_content" class="even ' + cBodyClass + ' trView_' + campId + '">' + jd + '</tr>');
                                                } else {
                                                    alert('Your request can not be process! Please refresh the page and try again')
                                                }

                                            }
                                        });
                                    }

                                });
                            });

</script>

これはajax応答で書かれています:

<script type="text/javascript" >
function showHideDate(id){
    $('#showHideDate_'+id).toggle(function(){
        $("#bookedDates_"+id).slideDown(
         function(){
           $('#showHideDate_'+id).text("-")
         }
       );
   },function(){
       $("#bookedDates_"+id).slideUp(
       function(){
           $('#showHideDate_'+id).text("+")
       }
       );
   });     
};

$(document).ready(function(){
$('.plus').live('click',function(){
        var id=$(this).attr('id');
        var idArr=id.split('_');
        id=idArr[1];
        //alert(id);
        showHideDate(id);
});


});

</script>

今、私はそれをライブで削除してそれを書き留めると.click(function()、なぜそれが機能しないのかはっきりしませんか?

私は Javasript/jquery でそれほど音を立てていません

4

3 に答える 3

2

.live()は、いわゆるデリゲート イベント ハンドラーを生成し、問題の要素 + サイトが最初に読み込まれた後に動的に生成された要素にフックします。.click()は、最初から存在する要素だけを実行します。

ただし、.live()は非推奨であり、代わりに.on()を使用する必要があります。

于 2013-07-18T10:23:11.977 に答える