這是我之前提出的一個問題, MVC: Button not firing click event in a tablecell
因爲我正在動態地創建一個網格,所以我必須使用jquery委託才能將事件附加到網格中的按鈕上。
所以我有這個部分在我看來;
<section id="rightSide" class="shrinkwrap" style="float: right;margin-top:10px;width:500px;">
<fieldset>
<legend>Select Other Materials</legend>
<form method="get" action="@Url.Action("CreateOtherMaterials", "DataService")"
data-scd-ajax="true" data-scd-target="#otherMaterialList">
<p>Select a Material: <input type="search" name="searchOtherMaterial" id="searchOtherMaterial" data-scd-autocomplete="@Url.Action("AutocompleteOtherMaterial", "DataService")" style = "width: 300px;" class="submitOtherMaterialSelectionNew" data-scd-add-other-material="@Url.Action("AddOtherMaterialNew", "DataService")"/>
@Html.DialogFormButton("Add New Material", Url.Action("AddMaterial", "Popup"), "Add New Material", null, Url.Action("Create"))
</p>
</form>
@Html.Partial("_OtherMaterials", Model.SupplierMaterialList.Where(x => x.PrimaryMaterialFlag == false).ToList())
</fieldset>
</section>
局部視圖_OtherMaterials看起來像
@model IList<SupplierMaterial>
<div id="otherMaterialList" >
<p>These materials have now been added for this supplier</p>
<table id="tableOtherSupplierList">
@Html.DisplayForModel()
</table>
</div>
而且我的顯示模板;
@model SupplierMaterial
<tr>
<td>@Model.Material.MaterialName </td>
<td>
<form class="shrinkwrap" method="get" action="@Url.Action("RemoveOtherMaterial", "DataService", new { id = Model.MaterialId })">
<input type="button" id="btnRemove" value="Remove" class="removeItem"/>
</form>
</td>
</tr>
我用這個查詢刪除網格中的一行,點擊Remove按鈕;
$('body').delegate('.removeItem', 'click', function() {
var $form = $(this).closest("form");
var options = {
url: $form.attr("action"),
type: $form.attr("method")
};
$.ajax(options).done(function (data) {
$(this).parent("tr").remove();
});
return false;
});
我試着用更接近的東西來替換body元素,例如#tableOtherSupplierList,但是沒有奏效。我想使用on()而不是委託,但到目前爲止只有上面的代碼似乎工作。但是我的主要問題是行$(this).parent(「tr」)。remove();不會修改我的視圖並刪除表格。 我該如何解決這個問題?
$(本)中完成的()最有可能不涉及任何DOM元素。 – foxx