在javascipt / jquery中如何获取选中的元素名称。这些都在表格中。我必须到达并检测td标签中已选中复选框的标签。
$.each(value.Value, function (_, ObjElement) {
var tr = $('<tr>').appendTo(table);
$("<td>").appendTo(tr);
$("<td>", { id: 'clusterList' }).text(ObjElement.Name).append($('<input type=checkbox>').prop("checked", true)).appendTo(tr);
<td id="clusterList">Cluster1<input type="checkbox" checked="checked"></td>
<td id="clusterList">Cluster2<input type="checkbox" checked="checked"></td>
<td id="clusterList">Cluster3<input type="checkbox" checked="checked"></td>
如果选中第一个和第二个复选框,结果应该是这样的。
Listcluster = {Cluster1中,Cluster2中}
答案 0 :(得分:1)
ID必须唯一,您应该使用类。您可以使用map
方法将值存储在数组中。
var listCluster = $('table td').has('input[type=checkbox]:checked').map(function(){
return this.textContent || this.innerText;
// return $.trim( $(this).text() );
}).get();
答案 1 :(得分:0)
$('td input:checked').parent().text();
btw id必须是唯一的。
答案 2 :(得分:0)
1)Ids必须是唯一的。您不能拥有具有相同ID的多个元素。
因此,假设您拥有以下DOM:
<table id="myTable">
<tr>
<td id="clusterList1">Cluster1<input type="checkbox" checked="checked"></td>
<td id="clusterList2">Cluster2<input type="checkbox" checked="checked"></td>
<td id="clusterList3">Cluster3<input type="checkbox" checked="checked"></td></tr></table>
并且,鉴于您的示例不包含名称属性,我假设当您说“名称”时,您的意思是“输入字段之前的文本”。 然后你的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个元素。