12

jquery Data table 1.9.4 と jquery 1.9.1 を使用しており、クリック イベントでこのような ajax 呼び出しを実行しようとしています。

$(".icon-trash").on('click',function () {
                // alert($(this).attr('id'));
                $.post('/WorkOrderRequest/DeleteWOR',
                        { id: $(this).attr('id') },

                        function (returndata) 
                        {

                            if (returndata.ok) 
                            {
                                window.alert(' deleted!');
                                $("#emp" + idemployee).hide('slow');
                            }
                            else {
                                window.alert(' error : ' + returndata.message);
                            }

                    });

            });

html 部分:

@foreach (var item in Model)
                    {

                        <tr>
                            <td>
                                @Html.DisplayFor(modelItem => item.ProjectCode)
                            </td>
                            <td>
                                @Html.DisplayFor(modelItem => item.WO_Date)
                            </td>


                            <td>
                             <a  id='@(item.WO_ID)' class="icon-edit" />
                               |                               
                             <a  id='@(item.WO_ID)' class="icon-trash" />
                           </td>
                        </tr>
                    }

最初のページでは問題なく動作していますが、2 ページ目からは結果が表示されません。助けてください

4

7 に答える 7

30

ページネーションの仕組みでは、現在のページに不要な行が DOM から削除されます。したがって、これらの要素に直接バインドしたイベント ハンドラーは、html が削除されると失われます。

on()ページ内の永続的なアセットにハンドラーをバインドするには、委任構文を使用する必要があります。これは、親テーブルまたはツリーの上にあるその他の親である可能性があります。document

$('#TableID').on('click','.icon-trash',function () {...

API リファレンス: http://api.jquery.com/on/

于 2013-04-20T11:43:50.163 に答える