2015-11-04 52 views
1

我在我的視圖中有以下代碼,它爲我的模型列表中的每個項目創建一個好處行。最近的.remove不工作

 for (var i = 0; i < Model.Benefits.Count(); i++) 
          { 
           <div class="benefits-row"> 
            @Html.HiddenFor(a => Model.Benefits[i].AllowanceID) 
            @Html.HiddenFor(a => Model.Benefits[i].AllowanceTypeID)@* This somehow magically turns into id="Benefits_0__AllowanceTypeID" name="Benefits[0].AllowanceTypeID", which is why a foreach won't work. *@ 

            @if (Model.IsUnlocked) 
            { 
             if (Model.CanEdit) 
             { 
              @*           @Html.DropDownListFor(a => Model.Benefits[i].AllowanceTypeID, new SelectList(Model.AllowanceTypesBenefits, "Value", "Text", Model.Benefits[i].AllowanceTypeID), new { @style = "width:220px;" }, Model.CanView)*@ 

              <label style="width: 90px; margin-right: 20px; text-align: right;">@Model.Benefits[i].AllowanceTypeName</label> 

               @Html.TextBoxFor(a => Model.Benefits[i].Amount, Model.CanView, new { maxlength = "110", size = "10", Value = String.Format("{0:0.00}", Model.Benefits[i].Amount) }) 
               @Html.ValidationMessageFor(m => Model.Benefits[i].Amount) 

               @Html.TextBoxFor(a => Model.Benefits[i].ExpiryDate, new { @class = "datepicker", @style = "width: 80px;", Value = String.Format("{0:d/MM/yyyy}", Model.Benefits[i].ExpiryDate), @readonly = "readonly" }) 
               @Html.ValidationMessageFor(m => Model.Benefits[i].ExpiryDate) 
              <a class="removeBenefit" href="javascript:" onclick="$pc_nav.people.DeleteBenefit()"> 
FRASER 
              </a> 
             } 
             else if (Model.CanView) 
             { 
              <span class="benefitLabel">@Model.Benefits[i].AllowanceTypeName</span> 
               @Html.TextBoxFor(a => Model.Benefits[i].Amount, Model.CanView, new { maxlength = "100", size = "8", Value = String.Format("{0:0.00}", Model.Benefits[i].Amount), @readonly = "readonly", disabled = "disabled" }) 
               @Html.TextBoxFor(a => Model.Benefits[i].ExpiryDate, new { @style = "width: 80px;", Value = String.Format("{0:d/MM/yyyy}", Model.Benefits[i].ExpiryDate), @readonly = "readonly", disabled = "disabled" }) 
             } 
            } 
            else 
            { 
             <span class="benefitLabel" style="width: 110px;">@Model.Benefits[i].AllowanceTypeName</span> 
              <input type="text" size="8" value="###" disabled="disabled" style="width: 80px;" /> 
              @Html.TextBoxFor(a => Model.Benefits[i].ExpiryDate, new { @class = "datepicker", @style = "width: 80px;", Value = String.Format("{0:d/MM/yyyy}", Model.Benefits[i].ExpiryDate), @readonly = "readonly", disabled = "disabled" }) 
            } 
           </div> 
           } 

在下面的一個標籤

       <a class="removeBenefit" href="javascript:" onclick="$pc_nav.people.DeleteBenefit()"> 
            FRASER 
           </a> 

我使用的點擊數事件處理函數調用javascript函數

DeleteBenefit: function() { 

      $(this).closest(".benefits-row").remove(); 

     } 

但是,當我點擊的標籤,沒有任何反應以下,我不知道爲什麼?

+0

是你在javascript控制檯中得到任何錯誤? –

+0

回答下面,我沒有在我的控制檯 –

回答

3

通行證DeleteBenefit元素,因爲現在thiswindow

<a class="removeBenefit" href="javascript:" onclick="$pc_nav.people.DeleteBenefit(this)"></a> 

DeleteBenefit: function (element) { 
    $(element).closest(".benefits-row").remove(); 
} 

,如果你使用jQuery更好地避免內聯事件和使用jQuery的事件綁定,你可以做這樣的

<a class="removeBenefit" href="javascript:"></a> 

$('.removeBenefit').on('click', function() { 
    $(this).closest(".benefits-row").remove(); 
}) 
+1

中得到任何錯誤,你在全局範圍內調用'DeleteBenefit',所以這個''這個函數將會是'window'。 –