首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jquery在点击时添加到数组吗?

jquery在点击时添加到数组吗?
EN

Stack Overflow用户
提问于 2010-03-31 01:54:07
回答 3查看 5.5K关注 0票数 2

我对每个()和.each()感到困惑...我想我需要两者都用,但我不确定如何...

基本上,我有一系列的复选框,当它们被选中时,我希望获得最近的表行的id,并将其添加到一个数组中,然后我可以序列化该数组并将其传递给一个函数。

因此,html如下所示:

代码语言:js
复制
Send

并且,当复选框被选中时,我希望获得最接近的tr id并将其存储在一个数组中:

代码语言:js
复制
var trids = []

然后序列化输入数据和trids数组。

到目前为止,我只有以下内容:

代码语言:javascript
复制
$('#tsid').click(function() {

  //meant to get the values of the selected checkboxes
  var myData = $('input[name=did[]]').serialize();

  //meant to find and store the closest tr ids in an array... 
  $('.bd').each(function() {
    var trids = $(this).closest("tr").get(0);  //and now I'm lost... 
  });

}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-31 01:58:30

它应该是:

代码语言:javascript
复制
$('.bd:checked').each(function() {
   trids.push($(this).closest("tr").attr('id')); // instead of var trids = ....
});

$('.bd:checked')仅选中选中的复选框。closest('tr')获取父级

tr因为你已经做对了。attr('id')获取id这个tr。没有必要在get(0)作为closest()已经只选择了一个元素。

然后将该值添加到数组中trids通过使用push()方法。

更新:jQuery的.searialize()函数从表单元素的值中生成字符串,例如:

代码语言:js
复制
field1=value1&field2=value2&...

我不认为它能在数组上工作。我所知道的唯一解决方案是自己为数组生成字符串:

代码语言:javascript
复制
var myData = $('input[name=did[]]').serialize();

for(var i = 0; i < trids.length; i++) {
    myData += '&trid[]=' + trids[i]; or // '&trid%5B%5D=' have it encoded.
}

这会将数组值附加到序列化的字符串中。

但我想有一个更好的解决方案。

票数 1
EN

Stack Overflow用户

发布于 2010-03-31 02:04:18

只需获取元素,然后使用map函数从每个tr元素获取id。使用get

方法以数组形式而不是jQuery对象的形式获取结果。

代码语言:js
复制
var trids = $('.bd').map(function(i,e){ return $(e).closest('tr').attr('id'); }).get();
票数 0
EN

Stack Overflow用户

发布于 2021-02-25 17:46:36

这段代码适用于我

代码语言:javascript
复制
$(document).ready(function () {
      var checkbox_values= [];
      $('input[type="checkbox"]').change(function() {
        if(this.checked) {
            $(this).each(function(){
                var checked_value = $(this).val();
                checkbox_values.push(checked_value);
            });
            console.log( "checked_value: " + checkbox_values);
           //output checked_value: 232
           //output checked_value: 232,234
           //output checked_value: 232,234,676
        } else {
            console.log('not checked');
        }    
      });
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2547395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档