1

jquery datatables プラグインを使用しており、最初の行に 2 つのリンクがあります。これらのリンクは、クリック時に ajax を送信するために使用されます。データテーブルを実装したため(事前にテーブルしかありませんでした)、動作しなくなりました。私は周りを見回して、2つのことを試しました:

もともと持っていた

               $(".approveReject").click(function () {
                   OnApproveRejectClick("voavi", this);
               });

しかし、それを

$(document).delegate("click", '.approveReject', function (event) {
alert("clicked");
});

成功しなかったので、fnInitComplete コールバックをデータテーブルの init オブジェクトに追加しようとしました。

        "fnInitComplete": function () {
            $(".approveReject").click(function () {
                OnApproveRejectClick("voavi", this);
            });
        }

まだ何もありません。クリックが全く効きません。クリックイベントをリンクにバインドするために何をする必要があるか考えていますか? ありがとう

完全なデータテーブルの初期化

    $("#voaviTable").dataTable({
        "bJQueryUI": true,
        "bScrollInfinite": true,
        "bScrollCollapse": true,
        "iDisplayLength": 30,
        "sScrollY": "450px",
        "oLanguage": {
            "sSearch": "Filter: "
        },
        "aaSorting": [],
        "fnInitComplete": function () {
            $(".approveReject").click(function () {
                OnApproveRejectClick("voavi", this);
            });
        }
    });

表の例の行:

<tr class="even">
<td class=" ">
<a id="lnkApprove" class="approveReject" href="#">Approve</a>
|
<a id="lnkReject" class="approveReject" href="#">Reject</a>
<span class="ui-icon ui-icon-circle-check" style="display: none;"></span>
<span class="ui-icon ui-icon-circle-close" style="display: none;"></span>
<img id="loaderGif" height="16px" style="display: none;" src="../../Content/images/loader.gif">
</td>
<td class="statusID "> 32 </td>
<td class="statusText "> new </td>
<td class=" "> </td>
<td class=" "> </td>
<td class=" "> Cote de Blancs </td>
<td class=" "> </td>
<td class=" "> </td>
<td class=" ">
<td class=" "> 10/5/2012 2:54:05 PM </td>
</tr>
4

1 に答える 1

4

デリゲートを間違って使用しています

$(document).delegate( '.approveReject', "click",function (event) {// <-- notice where the selector and event is
    alert("clicked");
});

ただし、jQuery 1.7+ を使用している場合は .on() を使用します

$(document).on("click", '.approveReject', function (event) {
    alert("clicked");
});

最も近い静的親要素であるため、イベントをテーブルにバインドするのが最善の方法です(私は推測しています)

$('#voaviTable').on('click','.approveReject', function (event) {

$(document).delegate(セレクター、イベント、データ、ハンドラー); // jQuery 1.4.3+

$(document).on(イベント、セレクター、データ、ハンドラー); // jQuery 1.7+

于 2012-10-05T20:07:54.857 に答える