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 项目,找到数据年并返回一个具有相等项目数的对象,例如 {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 回答