更新锚标记点击时的输入标记值

时间:2017-05-18 21:17:03

标签: javascript jquery html

我有一个div

@{int index = 0;}
@for (int i = 0; i < Model.lstFiles.Count; i++)
{
     <div id="attachmentDetail(@index)" name="attachmentDetail(@index)" class="panel-body">
         <a asp-action="Download" asp-controller="Admin" asp-route-realName=Model.lstFiles[i].RealName>@Model.lstFiles[i].FileName</a>
         <a onclick="btnDelFile_Click(@index)" id="btnDelFile{@index}" class="pull-right" title="delete"><img height="20" width="20" src="@Url.Content("~/images/delete.jpg")" /></a>
         <input type="text" asp-for="@Model.lstFiles[i].IsDeleted" hidden />
         <input type="text" asp-for="@Model.lstFiles[i].FileId" hidden />
         <hr />
     </div>
     index++;
 }

我想更新@Model.lstFiles[i].IsDeleted上的btnDelFile_Click值。但是我无法得到div和它的孩子。我试过这段代码

$('#attachmentDetail(' + index +') :input lstFiles['+index+'].IsDeleted').val("True");

但它说

  

jquery.min.js:2未捕获错误:语法错误,无法识别的表达式:#attachmentDetail(0)

有没有更好的方法来获得div的孩子?我想更新IsDeleted值,然后隐藏此div。

任何形式的帮助都将受到赞赏。

2 个答案:

答案 0 :(得分:1)

您可以为元素设置id,并使用document.getElementById获取它,然后相应地更新它。

答案 1 :(得分:1)

是的,有一种更好的方式来让孩子(以及父母)。我会在所有可点击的<a>标记上设置一个唯一的类来触发您的代码,以便您可以按类分配事件处理程序。

$(".uniqueClass").click(function (e) {
  var $div = $(this).parent();
  var $deletedField = $div.find("input").first();
  $deletedField.val(true);
});

现在你可以摆脱所有这些ID属性。