这可能已被回答;但是,我无法找到特定的解决方案。
我们说我有跟随div ...
<div class="listings-area">
<div itemtype="http://schema.org/Product" itemscope="">
<a class="listing" data-id="D_2781467">blah blah </a>
some more blahj blah text here
</div>
<div itemtype="http://schema.org/Product" itemscope="">
<a class="listing" data-id="D_2781445">blah blah </a>
some more blahj blah text here
</div>
.......................
.......................
</div>
我想要的是我想获取所有这些data-id属性并添加到数组然后在javascript cookie中传递
如果我做的话
$('a.listing').attr('data-id')
我得到第一个元素的数据id。我想要所有元素数据id,然后将那些id添加到数组中......?
答案 0 :(得分:2)
您可以使用 .map() :
var idArr = $('a.listing').map(function() {
return $(this).attr('data-id');
}).get();
然后使用以下内容将其存储在Cookie中
$.cookie("example", idArr);
如果你正在使用 jQuery cookie 插件。
答案 1 :(得分:1)
您应该使用.data()
来获取数据属性:
$('a.listing').data('id');
获取所有这些内容,请使用.each()
:
var arr = $.cookie('somecookiename').split(', '); // split string to array
$('a.listing').each( function(){
arr[i] = $(this).data('id') // convert string array entries to dataids
});
答案 2 :(得分:0)
var yourarray = new Array();
var elements = document.getElementsByClassName('listing');
for ( var i = 0; i < elements.length; i++ )
{
var el = elements[i];
var id = jQuery(el).attr('data-id');
yourarray.push( id );
}
alert(yourarray);
答案 3 :(得分:0)
使用.map()
和.data()
,如http://jsfiddle.net/iamnotsam/AExsP/
// Gets array of ids
var ids = $('.listing').map(function() {
return $(this).data('id');
}).get();
答案 4 :(得分:0)
其他做法是使用for循环.. Demo :
<div itemtype="http://schema.org/Product" itemscope="" class="ListingS">
<ul>
<li>
<a class="listing" data-id="D_2781467">blah blah </a>
<p>some more blahj blah text here </p>
</li>
<li>
<a class="listing" data-id="D_2781445">blah blah </a>
<p>some more blahj blah text here </p>
</li>
</ul>
</div>
<script>
$(function(){
var liLength = $('.ListingS').find('a').length;
var liDom = $('.ListingS').find('a');
for (var i = 0; i < liLength; i++ ) {
console.log( "try " + i + liDom.eq(i).attr('data-id'));
}
})