2015-11-19 111 views
0

我應該創建功能,凡與此標記jQuery的創建屬性附加傷害數據陣列和檢查(真/假)

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

返回我的數據ID:真/假複選框的選中

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

我有這個功能

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

其中回報我:數據-ID(但李的數據-ID) 如何SH我應該修改這些代碼嗎?

+0

檢查此http://jsfiddle.net/gw8h2f5q/ – guradio

回答

0

所有ul ID首先應該是list,而不是#list

然後做

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

console.log(obj); 
0

你不應該在元素的標記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>

0

謝謝

這是基於這個

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

您可以使用下面的代碼段用於預期的結果我的代碼。

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