javascript - Slick Slider 按类过滤而不是 :even

标签 javascript slick.js

这是来自光滑 slider 的代码,用于过滤 div。我在网上找不到任何解决方案,也没有自己管理将':even'更改为类名。

这是下面的代码:

var filtered = false;

$('.js-filter').on('click', function(){
  if (filtered === false) {
    $('.filtering').slick('slickFilter',':even');
    $(this).text('Unfilter Slides');
    filtered = true;
  } else {
    $('.filtering').slick('slickUnfilter');
    $(this).text('Filter Slides');
    filtered = false;
  }
});

':even' 部分是否可以更改为类名?除了':even' 部分,我需要的代码完全一样。谁能帮帮我?

最佳答案

是的,只需将 :even 替换为光滑 slider 项目的类名即可。重要的是,光滑的 slider 项目是您的 slider 元素的直接子元素,这样才能起作用。例如:

<div class="my-slick-slider">
  <div class="item dog"><!-- YOUR ELEMENT --></div>
  <div class="item dog"><!-- YOUR ELEMENT --></div>
  <div class="item cat"><!-- YOUR ELEMENT --></div>
  <div class="item cat"><!-- YOUR ELEMENT --></div>
</div>

将 slider 项目的内容放在项目 div 中。然后您可以通过简单地创建一个 javascript 函数来过滤,该函数按类名过滤光滑的 slider :

const filterByClassname = (classname) => {
  $('.filtering').slick('slickUnfilter');
  $('.my-slick-slider').slick('slickFilter', `.${classname}`);
});

// filter by classname "cat"
filterByClassname("cat");

这里有两件重要的事情: - 注意你必须在类名前加上一个点。 jquery 函数 filter 需要一个 css 选择器作为输入。 - 注意使用 .slick('slickUnfilter'); 您可以重新设置 slider 的过滤。我建议在应用新过滤器之前始终这样做。

希望对您有所帮助!这是一个应用了过滤的功能齐​​全的 codepen 示例:CODEPEN

关于javascript - Slick Slider 按类过滤而不是 :even,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51830605/

相关文章:

javascript - JavaScript 的自定义日期单位

javascript - 使用 jQuery 检测移动设备旋转

javascript - IE9+ 弄乱了我的 JSON 对象

angularjs slick js carousel ng-click 不使用响应属性设置触发

javascript - Slick Init - slickPause 未定义

javascript - 将多个 Slick slider 同步在一起

javascript - 将 API 中的数据插入 DOM

javascript - 如何在 ASP.Net MVC 应用程序中正确放置脚本文件

javascript - Webpack:无法加载具有全局 jQuery 的 slick 插件

jquery - Slick.js 垂直、中心模式、slidesToShow > 5 不工作