0

在 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}

4

3 回答 3

1

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/

于 2013-01-20T21:11:02.483 回答
0
$('td input:checked').parent().text();

顺便说一句,ID 必须是唯一的。

于 2013-01-20T21:11:01.797 回答
0

1) ID 必须是唯一的。不能有多个具有相同 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。然后,您在所需的嵌套级别向所有复选框添加一个更改处理程序。使用更改处理程序而不是单击处理程序的原因是,更改处理程序将允许您根据在选中复选框后按下空格键来处理值更改,而单击事件不会选择它。

在更改处理程序内部,$(this)指的是已更改的复选框,同时.parent()向上一级以获取其包装 td。

.text()将获得一个丢弃所有 HTML 的 DOMElements 文本。

indexOf()将返回找到值的第一个索引,如果从未找到则返回 -1,因此将 indexOf 与 -1 进行比较相当于询问“此项目是否存在?”

.push()是一个将元素添加到数组末尾的函数,同时.splice(x, y)将删除从 x 的索引开始的 y 元素。

于 2013-01-20T21:16:14.047 回答