如何在标签中获取带有选中标签的元素?
在javascipt / jquery中如何获取选中的元素名称。 这些都在表格中。 我必须到达并检测td标签中已选中复选框的标签。
$.each(value.Value, function (_, ObjElement) { var tr = $('').appendTo(table); $("").appendTo(tr); $(" ", { id: 'clusterList' }).text(ObjElement.Name).append($('').prop("checked", true)).appendTo(tr); Cluster1 Cluster2 Cluster3
如果选中第一个和第二个复选框,结果应该是这样的。
Listcluster = {Cluster1中,Cluster2中}
ID必须是唯一的 ,您应该使用类。 您可以使用map
方法将值存储在数组中。
var listCluster = $('table td').has('input[type=checkbox]:checked').map(function(){ return this.textContent || this.innerText; // return $.trim( $(this).text() ); }).get();
1)Ids必须是唯一的。 您不能拥有具有相同ID的多个元素。
因此,假设您拥有以下DOM:
Cluster1 Cluster2 Cluster3
并且,鉴于您的示例不包含名称属性,我假设当您说“名称”时,您的意思是“输入字段之前的文本”。 然后你的jquery看起来如下:
ListCluster = [] $('table#myTable tr td input[type=checkbox]').on('change', function(){ if($(this).attr('checked')=='checked'){ if(ListCluster.indexOf($(this).parent().text()==-1){ ListCluster.push($(this).parent().text()); } } else if(ListCluster.indexOf($(this).parent().text()>=-1){ ListCluster.splice($(this).parent().text(), 1); } }
这是它的工作原理。
初始化一个数组ListCluster。 然后,在所需的嵌套级别为所有复选框添加一个on change处理程序。 使用更改处理程序而不是单击处理程序的原因是,更改处理程序将允许您在选中复选框后基于空格键处理值更改,而单击事件不会选择此项。
在更改处理程序内部, $(this)
引用已更改的复选框,而.parent()
达到一级以获取其包装td。
.text()
将获取丢弃所有HTML的DOMElements文本。
indexOf()
将返回找到值的第一个索引,如果从未找到它,则返回-1,因此将indexOf与-1进行比较等同于询问“此项是否存在?”
.push()
是一个向数组末尾添加元素的函数,而.splice(x, y)
将从x的索引处删除y个元素。
$('td input:checked').parent().text();
顺便说一句ids必须是唯一的。