Javascript 在jquery中使用每个方法

Javascript 在jquery中使用每个方法,javascript,jquery,each,Javascript,Jquery,Each,我有一个带有输入复选框的表 当用户选中复选框时,我将把这个值属性保存到一个数组中……因此用户正在单击、选中和取消选中,一段时间后他将按下按钮 在button click事件中,我尝试遍历每个记录,并检查每个输入[type=checkbox]是否与数组中的值相同,因此如果值相同,则我将从该行读取所有td值 这是我的代码: $('#something').click(function(){ $( "tr td input" ).each(function(index) { //selected

我有一个带有输入复选框的表

当用户选中复选框时,我将把这个值属性保存到一个数组中……因此用户正在单击、选中和取消选中,一段时间后他将按下按钮

在button click事件中,我尝试遍历每个记录,并检查每个输入[type=checkbox]是否与数组中的值相同,因此如果值相同,则我将从该行读取所有td值

这是我的代码:

$('#something').click(function(){
$( "tr td input" ).each(function(index) {
   //selected is an array which has values collected from the checked checkboxes..for example [2,3]
   for(var i=0;i<selected.length;i++)
   {
    if($(this).val()==selected[i][0].value)
    {
            alert($('tr').eq(index).find('td').eq(1).text());
    }
   }
});
});
和html代码:

<table>
    <tbody>
    <tr>
        <td><input type="checkbox" value="on"></td>
        <td>ID</td>
        <td>Name</td>
    </tr>
    <tr>
        <td><input type="checkbox" value="0"></td>
        <td>1</td>
        <td>John</td>
    </tr>
    <tr>
        <td><input type="checkbox" value="1"></td>
        <td>2</td>
        <td>Steve</td>
    </tr>
    </tbody>
</table>

例如,如果数组中有值[1]。如何从中获取所有行信息?我的代码不起作用。有什么想法吗?

如果$this.val==selected[i][0],则条件值似乎不是true

如果它是一个简单的数组,那么最终不需要.value。只需与所选[i][0]进行比较即可

我创建了一个数组,读取值并将其写入数组:

  var checkBoxCollection = new Array();
  var cb = {};

  $("button").click(function(){      

        $("input").each(function(index, el){

          id = $(el).attr("id");
          val = $(el).val();
          isChecked = $(el).is(':checked');
          console.log(index, id, val);
          checkBoxCollection.push({'id': id, 'val': val, 'isChecked': isChecked});
        }); // each
        console.log(checkBoxCollection);
    }); // button.click  
您可以使用这种方法在单击按钮后立即选择单元格值,并且只需测试是否选中了该框。了解如何使用控制台和

使用一个复选框更新所有 在我的示例中,您可以看到我使用了两个不同的选择器

// using different selector - see my comment and tell me if you can not do that
Select all <input class="cbAll" type="checkbox" id="cbAll" value="on">
// and each checkbox like this
<input class="cb" type="checkbox" id="cb0" value="0">
更新,包括 进入数组。相关代码如下所示

  isChecked = $(el).is(':checked');
  if(isChecked){
    var cells = $(el).parent().parent().children(); 
    var cellId = cells.eq(1).text();
    var cellName = cells.eq(2).text();
    checkBoxCollection.push({'id': id, 'val': val
              , 'isChecked': isChecked
              , 'cellId': cellId
              , 'cellName': cellName});
    console.log(index, id, val, cellId, cellName);
  }
在屏幕截图中,您可以看到每个选中文本框的值都被复制

据我所知,我解决了你所有的问题:

使用jquery遍历每个复选框 如果选中了tablerow中的复选框,则将该行中的单元格文本复制到数组中
如果我没有完全理解你的问题,请澄清你想知道什么

你能在点击事件中添加你的按钮吗?我想我们可以用它作为找到解决方案的基础。@three fouronesixonethree我刚才做了,但它不起作用。你也可以在这里执行的函数中添加一个按钮。然后我会更新plunk。问题是我没有得到我应该得到的数据。第一个复选框给我的是headacheUse console.log,而不是alertthank you for your code,但是我的问题出现在第一个复选框中,该复选框的值为on,用于选择所有复选框。所以,当我通过所选的选项进行迭代时,第一个索引是value on,但我的另一个循环并没有正常工作。我需要跳过第一个复选框…因此我需要跳过$this。可以使用其他选择器吗?选择或切换以下每个复选框的第一个复选框中是否有一个?我很快会给你举个例子
  $("input.cbAll").click(function(){
    $("input.cb").each(function(index, el){
      // javascript ternary operator is optional this switches each checked state
      $(el).is(':checked') 
        ? $(el).prop('checked', false)
        : $(el).prop('checked', true);
    }); // each
  });  
  isChecked = $(el).is(':checked');
  if(isChecked){
    var cells = $(el).parent().parent().children(); 
    var cellId = cells.eq(1).text();
    var cellName = cells.eq(2).text();
    checkBoxCollection.push({'id': id, 'val': val
              , 'isChecked': isChecked
              , 'cellId': cellId
              , 'cellName': cellName});
    console.log(index, id, val, cellId, cellName);
  }