2016-12-06 4 views
-2

私は次のHTMLを使用しています。どのように正しくJavaScriptを使用してテーブルの行を削除するには?

<tr id="1"> 
<td></td> 
<td><input class="form-control" value="Extra Data"></td> 
<td><a href="#save" class="addsub_MS btn btn-primary btn-lg" id="1">Save</a></td> 
<td><a href="#delete" class="delete_MS btn btn-primary btn-lg" id="1">Delete</a></td> 
<td></td> 
</tr> 

私はこれが行を削除しません。次のJavaScript

$("a[href=#delete]").click(function() { 
var id; 
if ($(this).hasClass('delete_MS')) { 
    var id = $(this).attr("id"); 
    } 
    var data = { 
     id: id 
    }; 
    $.ajax({ 
     type: "POST", 
     url: "deleteparent.php", 
     data: data 
    }).done(function() { 
     $(this).closest('tr').remove(); 
    }); 
}); 

を使用して行を削除しようとしています。

提案がありますか?

答えて

3

すべきではないあなたは、そうでない場合はdone(..)関数内あなたの参照がに同じ参照ではない、別の変数にthis変数を保存する必要があります元aをクリックしました:

$("a.delete_MS").click(function() { 
    var id; 
    var that = this; 
    if ($(this).hasClass('delete_MS')) { 
     var id = $(this).attr("id"); 
    } 
    var data = { 
     id: id 
    }; 

    $.ajax({ 
     type: "POST", 
     url: "deleteparent.php", 
     data: data 
    }).done(function() { 
     $(that).closest('tr').remove(); 
    }); 
}); 
1

はセレクタが

`$("a[href=#delete]") or $('.delete_MS')` 

代わり

$("a[href=#deleteparentms]") 
3

this内はdoneのアンカーではありません。

console.log(this)はあなたが

}).done((function() { 
    $(this).closest('tr').remove(); 
}).bind(this))}; 
バインドし使用することができます

ことが表示されます
関連する問題