javascript - 使用 detach() 过滤类别
问题描述
帮助我分离()函数。
我知道它是如何工作的,但我需要帮助来应用它,在我的例子中,它现在删除了所有选定的类别,但你需要做相反的事情,以便删除除选定类别之外的所有类别。是否有必要以某种方式将除所选内容之外的所有内容放入一个类中并使用 detach() 还是更好的方法?
html
<div class="blog-filter">
<div class="blog-filter_item active js-filter-blog-list" data-filter="all">All</div>
</div>
<div class="blog-filter-container">
<div class="container">
<h1 class="blog-filter-title">Choose Category</h1>
<div class="item-wrapper">
<div class="blog-filter_item active" data-filter="all">All</div>
@foreach($categories as $category)
<div class="blog-filter_item" data-filter=".category_{{$category->id}}">{{ $category->title }} ({{ $category->articles_count }})</div>
@endforeach
</div>
</div>
</div>
<div class="blog-list">
@foreach($articles as $article)
<div class="blog-article category_{{ $article->blog_category_id }}">
<h2 class="blog-article__title">{{ $article->title }}</h2>
</div>
@endforeach
</div>
js
var divs;
$('.blog-article').each(function(i){
$(this).data('initial-index', i);
});
document.querySelectorAll('.blog-filter_item').forEach(el => {
el.addEventListener('click', () => {
document
.querySelector('.blog-filter_item.active')
.classList.remove('active');
el.classList.add('active');
var dataFilter = $(el).attr('data-filter');
$(divs).appendTo('.blog-list').each(function(){
var oldIndex = $(this).data('initial-index');
$('.blog-article').eq(oldIndex).before(this);
});
divs = null;
if (dataFilter == 'all') {
$('.blog-article').show();
}
else {
divs = $(dataFilter).detach();
$('.blog-article').show();
}
});
});
解决方案
解决方案:
divs = $('.blog-article').not(dataFilter).detach();
推荐阅读
- c++ - 如何使用 Qt 自动捕获窗口
- pointers - println! 与多个间接级别交互?
- python - 从旧列表中查找附加到新列表的元素的索引 - python 2
- python - 关于如何在地理数据库中的文件之间使用 arcpy intersect 启动 for 循环的任何建议?
- ffmpeg - FFmpeg amix-filter 总是做“音量标准化”。如何预防它以及它可能的缺点是什么?
- excel - 如果在行中找不到值,则循环跳到下一个
- reactjs - ReactJS 将参数从兄弟组件传递到兄弟组件
- c# - 未在 asp.net core 3.1 Web 应用程序中显示的代码引用
- reactjs - 仅在类中而不在函数中导入组件
- python-3.x - 无法在 Windows 上运行任何 pipenv 命令