2014-11-24 115 views
0

我是jQuery选择器的新手。我如何从属性中提取值?从属性选择器中提取值

考虑:

<div class='container'> 
<div class='entry' data-name='foo'></div> 
<div class='entry' data-name='bar'></div> 
<div class='entry' data-name='baz'></div> 
</div> 

我想提取: ['foo','bar','baz']

+0

你做了什么? – diEcho 2014-11-24 04:36:25

+0

我原本以为能够迭代jQuery('。entry')[0] .attr('data-name')之类的东西,但这似乎不起作用。 jQuery('。entry')[0] .attributes.data-name – Peter 2014-11-24 04:40:34

回答

2

您可以使用.map()创建像

var array = $('.container .entry').map(function() { 
    return $(this).data('name') 
}).get(); 
+0

'.get()。join()' – diEcho 2014-11-24 04:42:16

+0

@diEcho这取决于OP是否需要一个数组或字符串......来自'[' foo','bar','baz']看起来像OP想要一个数组 – 2014-11-24 04:45:32

1

从一组DOM元素的数组试试这个

$(function() { 
 
    var array = []; 
 
    $(".entry").each(function() { 
 
     array.push($(this).data("name")); 
 
    }); 
 
    console.log(array); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class='container'> 
 
<div class='entry' data-name='foo'></div> 
 
<div class='entry' data-name='bar'></div> 
 
<div class='entry' data-name='baz'></div> 
 
</div>

1

尝试

var name = []; 
$('div.container').children().map(function() { 
    name.push($(this).data('name')); 
}); 

Working DEMO

+1

如果你使用'map'则不需要创建一个'array'变量 – jasonscript 2014-11-24 04:49:25

+0

'name'是一个数组变量 – diEcho 2014-11-24 05:00:35