javascript - 使用 Jquery 在 prependTo 之后将列表恢复为先前的顺序
问题描述
我有一个列表,最初只显示四个(特色)列表项,一旦单击“显示更多”按钮,它就会显示列表的其余部分。我用来$('.featured').prependTo('.feature-list');
先显示特色项目。但是,当我单击“显示更多”按钮时,我希望列表在 prependTo 发生之前以原始顺序显示。我似乎无法弄清楚如何做到这一点。
$('.featured').prependTo('.feature-list');
$('.feature-list').find('li:gt(3)').hide();
$('.more-btn').click(function() {
$('.feature-list li:gt(3)').show();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p>List 1</p>
<ul class="feature-list feature-p-list1">
<li>Item 1</li>
<li class="featured">Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li class="featured">Item 5</li>
<li>Item 6</li>
<li>Item 7</li>
<li class="featured">Item 8</li>
<li class="featured">Item 9</li>
<li>Item 10</li>
</ul>
<button class="more-btn">Show More</button>
解决方案
只需尝试使用:not()
过滤器隐藏和显示
https://api.jquery.com/not-selector/
$('.feature-list > li:not(.featured)').hide()
$('.more-btn').click(function() {
$('.feature-list > li:not(.featured)').show()
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p>List 1</p>
<ul class="feature-list feature-p-list1">
<li>Item 1</li>
<li class="featured"><b>Item 2</b></li>
<li>Item 3</li>
<li>Item 4</li>
<li class="featured">Item 5</li>
<li>Item 6</li>
<li>Item 7</li>
<li class="featured">Item 8</li>
<li class="featured">Item 9</li>
<li>Item 10</li>
</ul>
<button class="more-btn">Show More</button>
推荐阅读
- android - 如何让我的应用通过 NFC 发送蓝牙配对请求
- angular - ngModel,单击在动态添加的 html 中无法以 Angular 4 工作
- javascript - Nodejs创建连接工厂
- laravel - 发生错误时如何使用会话消息将用户重定向到另一个页面
- c++ - 如何使用 VARIANT* pvarItems 构建对象
- php - .htaccess 和 AllowOverride
- sql - 选择为角色的 dbowner 显示具有其他角色的数据未在 iis 中显示
- assembly - 写入 [ADDR] 时 ASM 访问冲突
- protractor - 将protractor-html-screenshot-reporter生成的html报告转换成excel
- php - PHP REST API 查询返回空正文