【问题标题】:jQuery Create array with atribute data and checked (true/false)jQuery 使用属性数据创建数组并检查(真/假)
【发布时间】:2015-11-19 09:51:46
【问题描述】:

我应该用这个标记创建函数

<ul id="#list">
  <li data-id="22"><input type="checkbox" data-id="22" checked></li>
  <li data-id="32"><input type="checkbox" data-id="32"></li>
  <li data-id="56"><input type="checkbox" data-id="56"></li>
  <li data-id="43"><input type="checkbox" data-id="43" checked></li>
</ul>

返回我 data-id:true/false 复选框被选中

object: Array
22:true
32:false
56:false
43:true

我有这个功能

function () {
            return $('#list')
                .find('li')
                .map(function (i, el) {
                    return $(el).data('categoryid');
                })
                .get();
}

where return i:data-id (但 li 的 data-id) 我应该如何修改这段代码?

【问题讨论】:

标签: jquery arrays checkbox checked


【解决方案1】:

首先ul id 应该是list 而不是#list

那么做

var obj = {};
$("#list").each(function(){
   obj[$(this).data("id")]=this.checked;
});

console.log(obj);

【讨论】:

    【解决方案2】:

    您不必在元素的标记 ID 中添加 #

    <ul id="list"><!-- remove # -->
    

    那么你可以试试这样的:

    var arr = [];
    
    $('#list :checkbox').each(function(i, el){ 
      arr[i] = $(el).data('id') + ' : '+this.checked; 
    });
    
    $('pre').html(JSON.stringify(arr));
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <ul id="list">
      <li data-id="22">
        <input type="checkbox" data-id="22" checked>
      </li>
      <li data-id="32">
        <input type="checkbox" data-id="32">
      </li>
      <li data-id="56">
        <input type="checkbox" data-id="56">
      </li>
      <li data-id="43">
        <input type="checkbox" data-id="43" checked>
      </li>
    </ul>
    
    <pre></pre>

    【讨论】:

      【解决方案3】:

      谢谢

      这是我基于此的代码

              var a = {};
              var functionList = function(i, el) { 
                  a[$(el).data('id')] = this.checked; };
              $('#list :checkbox').each(functionList);
              return a;
      

      【讨论】:

        【解决方案4】:

        您可以使用以下代码获得预期结果。

        $(document).ready(function(){
        var arr =  $('li').map(function() 
        { 
         return ($(this).data("id") + ":" + ($(this).children().is(":checked")))
        })
        .get();
        console.log(arr)
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-04-30
          • 1970-01-01
          • 2014-04-02
          • 2013-10-27
          • 1970-01-01
          • 2014-08-21
          • 2018-06-04
          相关资源
          最近更新 更多