1

テーブルの一部を表す次のhtmlコードがあります

<tr>
   <td>    
      <span class='tip'><a href='#' class='Delete' data-name='product1' title='Delete'><img src='images/icon/icon_delete.png'></a></span>"
   </td>
</tr>
<tr>
   <td>    
      <span class='tip'><a href='#' class='Delete' data-name='product2' title='Delete'><img src='images/icon/icon_delete.png'></a></span>"
   </td>
</tr>

そしていくつかのJS

$(document).on('click', '.Delete', function () {
    var name = $(this).attr("data-name");
    $.confirm({
        'title': 'DELETE ROW',
        'message': "<strong>DO YOU WANT TO DELETE </strong><br /><font color=red>' " + name + " ' </font> ",
        'buttons': {
            'Yes': {
                'class': 'special',
                'action': function () {

                    // this is the problem
                    // i am trying to get the row
                    var row = $(this).closest("tr").get(0);

                    oTable.fnDeleteRow(row);

                }
            },
            'No': { 'class': '' }
        }
    });
});

行IDを取得しようとしているので、削除できます。click呼び出し元をイベントに渡す方法

編集:行を削除しようとしていますが、他の方法があるかもしれません

4

2 に答える 2

2

あなたの問題は、 $.confirm プラグインのactionコールバック関数内で、 の値が別のthisもの (つまり、DOM ノードではない) である可能性が高いことです。プラグインを呼び出す前に参照を保存し、$(this)その参照をコールバック内で使用しactionます。何かのようなもの:

$(document).on('click', '.Delete', function () {
    var node = $(this);
    var name = node.attr("data-name");
    $.confirm({
        'title': 'DELETE ROW',
        'message': "<strong>DO YOU WANT TO DELETE </strong><br /><font color=red>' " + name + " ' </font> ",
        'buttons': {
            'Yes': {
                'class': 'special',
                'action': function () {
                    var row = node.closest("tr").get(0);
                    oTable.fnDeleteRow(row);
                }
            },
            'No': { 'class': '' }
        }
    });
});

私はあなたの確認プラグインに慣れていないので、これは少し推測ですが、これは一般的な JS の落とし穴です。

于 2013-02-11T12:31:51.037 に答える
0

$(this).parent().parent().parent().remove();それを取り除く必要があります。

于 2013-02-11T12:18:50.183 に答える