Это может быть уже достигнуто; однако я не смог найти решение.
Скажем, у меня есть следующие divs...
<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>
Я хочу, чтобы я хотел получить все эти атрибуты идентификатора данных и добавить в массив, а затем передать их в javascript cookie
Если я сделаю что-то вроде
$('a.listing').attr('data-id')
Я получаю идентификатор данных первого элемента. Я хочу, чтобы все идентификаторы данных элемента, а затем эти идентификаторы добавлены в массив...?
Вы можете использовать .map():
var idArr = $('a.listing').map(function() {
return $(this).attr('data-id');
}).get();
затем сохраните его внутри файлов cookie, используя:
$.cookie("example", idArr);
если вы используете плагин jQuery cookie.
Вы должны использовать .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
});
Используйте .map()
и .data()
как показано здесь: http://jsfiddle.net/iamnotsam/AExsP/
// Gets array of ids
var ids = $('.listing').map(function() {
return $(this).data('id');
}).get();
Другой способ сделать это использовать для цикла. Демо:
<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'));
}
})
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);