从存储在对象中的元素获取数据

时间:2012-10-02 14:05:13

标签: javascript jquery object

是的,所以我试图找出一种方法,我可以检查对象中的元素是否有特定的数据,然后在必要时将它们过滤掉。

我有一个简单的列表,我正在浏览所有列表项并将它们放在一个对象中。稍后我想查看每个元素的数据ID。

<ul id="test">
    <li data-id="1">a</li>
    <li>b</li>
    <li>c</li>
    <li>d</li>
    <li>e</li>
    <li>f</li>
    <li>g</li>
    <li>h</li>
    <li data-id="2">i</li>
    <li>j</li>
    <li>k</li>
    <li>l</li>
    <li>m</li>
    <li>n</li>
</ul>`


var holder = {};
i = 0;
$('#test li').each(function(){
    holder[i]=$(this);
    i++
});
$('#test').append(holder[2]);
holder.each(function(){
    console.log($(this).attr('data-id'));

});

我相信你们其中一个聪明的人能够告诉我如何在短时间内实现这一目标。这可能是非常明显的!

为帮助人员干杯。

2 个答案:

答案 0 :(得分:4)

通过使用具有对象的jQuery选择器选择元素,无需创建额外的对象。

var $holder = $('#test li');

$holder.each(function(){
     console.log($(this).data('id'));
     // console.log(this.dataset.id);
})

如果要选择具有data-id属性的li元素,可以使用属性选择器:

var $holder = $('#test li[data-id]');

要存储值,您可以使用map方法:

var data = $('#test li[data-id]').map(function(){
                return this.dataset.id;
           }).get() // [1, 2]

答案 1 :(得分:0)

你有一个简单的数组,其中包含一个项目列表,而不是jQuery对象:

holder.each(function(){
    console.log($(this).attr('data-id'));

});

如果你想循环使用这样的数组项,你应该使用:

$.each(holder, function(){
    console.log($(this).attr('data-id'));

});​

但是从您的代码中您不需要它。您可以执行以下操作:

$('#test li').each(function(){
    console.log($(this).attr('data-id'));
});
$('#test').append($('#test li').eq(2));