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

时间:2013-01-20 21:04:53

标签: jquery checkbox html-table

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

3 个答案:

答案 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();

http://jsfiddle.net/SUHsT/

答案 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个元素。