jQuery查找名称属性包含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{

我有一个复选框列表。每个都在隐藏输入中插入了相关数据。当复选框被选中时,我想找到最近的隐藏输入,其中名称包含字符串“ID”。当我发出警报(obj.val())时,我得到一个“未定义”错误。名称中的ID是动态的,因此我无法使用确切的名称

$('.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
出现在名称中的任何位置,则前面的方法将匹配。