如何在标签中获取带有选中标签的元素?

在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(); 

http://jsfiddle.net/SUHsT/

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必须是唯一的。