0

次のようにjqueryでオブジェクトを返す関数を構築する方法:

<ul class="clearfix">
  <li data-year="2011" data-month="1">Jan</li>
  <li data-year="2011" data-month="2">Feb</li>
  <li data-year="2012" data-month="3">Mar</li>
  <li data-year="2012" data-month="4">Apr</li>
  <li data-year="2012" data-month="5">May</li>
</ul>

li item を検索し、data-year を見つけて、{2011: 2, 2012: 3} のように、等しいアイテムの数を持つオブジェクトを返します。

4

2 に答える 2

1
function obj(ul) {
    return {
               2011: $('li[data-year="2011"]', ul).length,
               2012: $('li[data-year="2012"]', ul).length
           }
}

console.log(obj($('ul')))   

http://jsfiddle.net/x2n7t/2/

アップデート:

var obj = {};

$('ul li[data-year]').each(function(){
   var year = $(this).data('year');
   obj[year] = obj[year] ? obj[year] + 1 : 1
})

http://jsfiddle.net/x2n7t/3/

于 2012-09-11T19:12:01.283 に答える
0

これをチェックして

var arr = [];
$('ul li').each(function(){
    var y = $(this).attr('data-year');
    if($.inArray(y,arr) < 0)
        arr.push(y);
});
// You build the Array with the List of Items..
//console.log(arr);

// Build the Object Here..

var obj = {};
$.each(arr, function(i){
    var y = arr[i];
    obj[y] = $('ul li[data-year="'+ y + '"]').length;
});
console.log(obj);​​​​​​​​​​​​​​​

デモはこちら

于 2012-09-11T20:10:46.190 に答える