查找名称属性值中包含[somedigit]的输入

时间:2016-04-19 06:38:37

标签: jquery selector string-matching

我有几个div,其中输入是这样的:

<div class="executor">
   <input type="hidden" name="Task.Executors[0].Id"/>
   <input type="hidden" name="Task.Executors[0].Name"/>
   <input type="hidden" name="Task.Executors[0].JobTitle"/>
</div>
<div class="executor">
   <input type="hidden" name="Task.Executors[1].Id"/>
   <input type="hidden" name="Task.Executors[2].Name"/>
   <input type="hidden" name="Task.Executors[3].JobTitle"/>
</div>

我需要一个执行此操作的选择器:查找名称包含Executors[somedigit]的输入。 somedigit部分是让我难过的部分。我需要正则表达式吗?

编辑:我似乎错过了一个非常重要的部分。我需要将Executors[somedigit]更改为Executors[2]之类的内容。所以我需要一些可以帮助我用另一个替换somedigit的东西。

EDIT2:为什么我需要这个。假设有100个这样的div。通常,最后一个div将包含名称中包含Task.Executors[99]的隐藏输入。现在,让我们说第87个div被删除了。现在有99个div,现在最后一个div中的输入必须将其名称从Task.Executors[99]更改为Task.Executors[98]。我需要这些索引是正确的,以便我的模型是一个有效的模型。

2 个答案:

答案 0 :(得分:2)

您可以使用属性包含选择器以及所需数字的串联:

var somenum = 2;
$('[name*="Executor['+ somenum  +']"]')

<强>样本:

&#13;
&#13;
$(function(){
var somenum = "0";
$('[name*="Executor['+ somenum  +']"]').val('abv')
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="executor">
   <input type="text" name="Task.Executor[0].Id"/>
   <input type="text" name="Task.Executor[0].Name"/>
   <input type="text" name="Task.Executor[0].JobTitle"/>
</div>
<div class="executor">
   <input type="text" name="Task.Executor[1].Id"/>
   <input type="text" name="Task.Executor[2].Name"/>
   <input type="text" name="Task.Executor[3].JobTitle"/>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以使用css selector $("[name^='Task.Executor']")来选择名称以Task.Executor开头的所有元素。

您可以查看更多选择器:http://www.w3schools.com/jquery/jquery_ref_selectors.asp