jQuery查找名称属性包含ID的最近隐藏输入
我有一个复选框列表。每个都在隐藏输入中插入了相关数据。当复选框被选中时,我想找到最近的隐藏输入,其中名称包含字符串“ID”。当我发出警报(obj.val())时,我得到一个“未定义”错误代码>。名称中的ID是动态的,因此我无法使用确切的名称jQuery查找名称属性包含ID的最近隐藏输入,jquery,Jquery,我有一个复选框列表。每个都在隐藏输入中插入了相关数据。当复选框被选中时,我想找到最近的隐藏输入,其中名称包含字符串“ID”。当我发出警报(obj.val())时,我得到一个“未定义”错误。名称中的ID是动态的,因此我无法使用确切的名称 $('.cb org').change(函数(){ 如果($(this).is(':checked')){ var obj=$(this).closest('input:hidden[name*=“ID”]'); 警报(obj.val()); } }); li{
$('.cb org').change(函数(){
如果($(this).is(':checked')){
var obj=$(this).closest('input:hidden[name*=“ID”]');
警报(obj.val());
}
});代码>
li{
列表样式:无;
}
-
我的组织
-
我的组织2
我假设您的组织实体[1]。ID获取一些ID包含ID的ID,因此请尝试以下操作
$('.cb org').change(函数(){
如果($(this).is(':checked')){
var obj=$(this.nexist('li').find('input:hidden[name*=“ID”]);
如果(对象长度<1){
obj=$(this).closest('ul').find('input:hidden[name*=“ID”]);
如果(对象长度<1){
警报(“ID不存在”);
返回false;
}
}
警报(obj.val())
}
});代码>
-
1.
-
2.
我们需要做的就是从复选框上移到包含li
元素,然后在name属性中找到包含“ID”的隐藏输入
$('.cb org').change(函数(){
如果($(this).is(':checked')){
var obj=$(this.nexist('li').find('input:hidden[name*=“ID”]);
警报(obj.val());
}
});代码>
li{
列表样式:无;
}
-
我的组织
-
我的组织2
如果将隐藏的输入移到标签内,可以大大简化查询
<label >
<input type="checkbox" class="cb-org" />
My Org
<input type="hidden" name="OrganisationEntities[0].Name" value="My Org 2" />
<input type="hidden" name="OrganisationEntities[0].ID" value="1" />
</label>
<input id="my-checkbox-id" type="checkbox" class="cb-org" />
<label for="my-checkbox-id">
My Org
</label>
<input type="hidden" name="OrganisationEntities[0].Name" value="My Org 2" />
<input type="hidden" name="OrganisationEntities[0].ID" value="1" />
在这两种情况下,复选框和隐藏输入都是同级的,允许进行更简单的查询,例如
$('.cb-org').on('change', function() {
$checkbox = $(this) // cache "this" so we don't have to re-select it
if ($checkbox.is(':checked')) {
var $hidden = $checkbox.siblings('input:hidden[name$="ID"]').first()
alert($hidden.val())
}
});
谢谢,但这不起作用,因为ID[1]
是动态的。您不明白,是吗。再次用你的ID检查来更改它。我必须再次这样做,以满足你的需要。重点是从隐藏的输入中获取ID。如果我已经知道了ID,那么这一切都是不必要的。你的问题是从名称包含ID的最近隐藏输入中获取值,对吗?是的。我需要获取隐藏的输入,其中name字段包含字符串“ID”。不是真实的身份,因为我不知道。@MunkhdelgerTumenbayar别担心,我没有投你反对票。唯一的区别是我建议修改HTML以使Javascript更易于编写。@mr.coffee您可能希望将name*=“ID”
更改为name$=“ID”
。这将仅检查以ID
结尾的名称,而如果ID
出现在名称中的任何位置,则前面的方法将匹配。