2015-11-04 66 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'。 –

相关问题