2017-07-31 54 views
0

之前保存的顺序,我需要你的帮助,我也有类似以下内容的一长串:jQuery的排序

<div id="works"> 
<div class="item" data-date="20160312">Item2</div> 
<div class="item" data-date="20170227">Item5</div> 
<div class="item" data-date="20051201">Item1</div> 
<div class="item" data-date="20010515">Item3</div> 
<div class="item" data-date="20100418">Item4</div> 
…. 
</div> 

我用下面的方法jquery sort list based on data attribute value按日期,类别的项目进行排序......但我需要在排序前保存最初的订单。 理想的做法是,例如,创建一个将增加一个“数据起源”这样的功能:

<div id="works"> 
<div class="item" data-origin="1" data-date="20160312">Item2</div> 
<div class="item" data-origin="2" data-date="20170227">Item5</div> 
<div class="item" data-origin="3" data-date="20051201">Item1</div> 
<div class="item" data-origin="4" data-date="20010515">Item3</div> 
<div class="item" data-origin="5" data-date="20100418">Item4</div> 
…. 
</div> 

你有一个解决方案? (我也使用infinitescroll加载了lite的延续,我也可以将这个“data-origin”添加到新元素中) 非常感谢!

+0

为什么,如果你已经使用了排序jQuery的解决方案没有jQuery的标签?使用['.each()'](https://api.jquery.com/each/)和['.data()']轻松完成的jQuery(https://api.jquery.com/data /) - > [jQuery学习中心](https://learn.jquery.com/) – Andreas

+0

没有jQuery:['document.querySelectorAll()'](https://developer.mozilla.org/zh-CN/docs/Web/API/Document/querySelectorAll)+ ['NodeList.prototype.forEach()'](https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach)+ ['HTMLElement .dataset'](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/dataset) – Andreas

回答

0

$('.item').each(function(index){ $(this).data('origin-order', index) }) 
 

 
$('.item').each(function(index){ console.log($(this).data('origin-order')) })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="works"> 
 
<div class="item" data-date="20160312">Item2</div> 
 
<div class="item" data-date="20170227">Item5</div> 
 
<div class="item" data-date="20051201">Item1</div> 
 
<div class="item" data-date="20010515">Item3</div> 
 
<div class="item" data-date="20100418">Item4</div> 
 
</div>

+0

这是完美的! 对不起,我是一个初学者,我正在寻找更复杂的... 谢谢大家! – tartartartar