javascript - 使用数据属性重新排序子元素并应用显示/隐藏
问题描述
我正在使用以下 html/jquery 根据其 data-price 属性重新排序包含 div 的子元素。
<div id="parent_div">
<div class="child_div" data-price="102">Item x</div>
<div class="child_div" data-price="95">Item y</div>
<div class="child_div" data-price="210">Item z</div>
</div>
HTML 由多个 AJAX 调用填充,因此初始结果没有排序,并且可能包含 50 多个子元素。一旦 AJAX 调用完成并填充了 HTML,我将运行以下 jquery:
function giveFormatOrder(parent_div, child_div) {
var $wrapper = $(parent_div);
$wrapper.find(child_div).sort(function(a, b) {
return +a.getAttribute('data-price') - +b.getAttribute('data-price');
})
.appendTo($wrapper);
}
giveFormatOrder('#parent_div','.child_div');
这工作正常。但我想隐藏除前 10 个有序子元素之外的所有元素。有没有办法通过添加计数器和添加显示/隐藏类来修改 jquery 函数来实现这一点?或者排序完成后是否需要触发第二个功能?我正在寻找性能最高的方法,但不知道如何去做。
解决方案
您可以使用.slice(10).hide();
演示
该演示仅首先显示 2。
function giveFormatOrder(parent_div, child_div) {
var $wrapper = $(parent_div);
$wrapper.find(child_div).sort(function(a, b) {
return +a.getAttribute('data-price') - +b.getAttribute('data-price');
})
.appendTo($wrapper).slice(2).hide();
}
giveFormatOrder('#parent_div', '.child_div');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="parent_div">
<div class="child_div" data-price="102">Item x</div>
<div class="child_div" data-price="95">Item y</div>
<div class="child_div" data-price="210">Item z</div>
</div>
推荐阅读
- java - 如何修复此内存泄漏(IntentService、Runnable、ObjectBox、Repository)?
- python - 数据科学 - 模型推荐
- python - 如何查找输入字符串中常见字符的数量
- c++ - 没有调用函数,而是使用了垃圾值。如何调用函数并解决问题?
- html - 为什么我的 HTML 网页有时会显示原始代码
- r - 我的数据框中具有连续数据类型的属性的等宽离散化和分类
- mysql - 左连接没有给出预期的结果
- .net - React Native:调用在 localhost 上运行的 API
- ios - Swift iOS Stripe - 当过期或 CVV 字段处于活动状态且卡号字段为空时如何关闭键盘
- javascript - 从另一个文件导入类后,React Navigation Switch Navigator 不起作用