You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Slick滑块:将上/下一页元素标题设为当前Div(WordPress)

实现Slick滑块Prev/Next按钮显示对应滑块内容

没问题,我来帮你搞定这个需求——让Slick的上一页、下一页按钮显示当前(或者对应)滑块的内容,咱们一步步来:

第一步:调整ACF循环的HTML结构

首先得把每个滑块的目标内容(比如你这里的视频标题、日期)存到滑块元素的自定义data属性里,这样JS能轻松拿到数据,不用费劲遍历内部DOM。修改你的循环代码:

<?php if (have_rows('videofeed2','option')): ?>
<div class="slider-popular">
  <?php while (have_rows('videofeed2','option')) : the_row(); 
    // 先把字段值存变量,方便复用和转义
    $videoTitle = get_sub_field('video_title','option');
    $videoDate = get_sub_field('date','option');
  ?>
  <!-- 给滑块容器加data属性,存标题和日期 -->
  <div class="slider-go-wrap" 
       data-slide-title="<?php echo esc_attr($videoTitle); ?>" 
       data-slide-date="<?php echo esc_attr($videoDate); ?>">
    <div class="pop-title desktop-title">
      <div class="video-title-wrap">
        <h2><?php echo $videoTitle; ?></h2>
        <div class="pop-dura"><?php echo $videoDate; ?></div>
      </div>
    </div>
    <!-- 这里放你滑块里的其他内容,比如视频缩略图、播放按钮之类的 -->
  </div>
  <?php endwhile; ?>
</div>
<?php endif; ?>

小提示:用esc_attr()转义属性值,能避免XSS风险和HTML语法报错,好习惯要保持~

第二步:添加导航按钮的HTML容器

如果还没加prev/next按钮,就在滑块外面添加上:

<div class="slider-navigation">
  <button class="slick-prev-btn">上一页</button>
  <button class="slick-next-btn">下一页</button>
</div>

第三步:编写JS逻辑更新按钮文本

接下来用Slick的回调事件,在滑块初始化和切换时更新按钮内容,分两种常用场景,你可以按需选择:

场景1:按钮显示当前滑块的内容

比如prev/next按钮都显示当前活跃滑块的标题:

jQuery(document).ready(function($) {
  // 初始化Slick滑块,关联导航按钮
  const $slider = $('.slider-popular');
  $slider.slick({
    prevArrow: $('.slick-prev-btn'),
    nextArrow: $('.slick-next-btn'),
    // 你的其他Slick配置,比如单滑块显示、循环等
    slidesToShow: 1,
    slidesToScroll: 1,
    infinite: true
  });

  // 封装更新按钮文本的函数,方便复用
  function updateNavText() {
    // 获取当前活跃的滑块
    const $currentSlide = $slider.find('.slick-current');
    // 从data属性里拿标题
    const currentTitle = $currentSlide.data('slide-title');
    
    // 更新按钮文本,也可以加日期,比如`上一页:${currentTitle} | ${currentDate}`
    $('.slick-prev-btn').text(`上一页:${currentTitle}`);
    $('.slick-next-btn').text(`下一页:${currentTitle}`);
  }

  // 滑块初始化完成后,先更新一次文本
  updateNavText();

  // 每次滑块切换完成后,更新文本
  $slider.on('afterChange', updateNavText);
});

场景2:按钮显示对应滑块的内容(prev显示上一个,next显示下一个)

如果想让prev按钮显示上一个滑块的标题,next显示下一个的,就把上面的updateNavText函数改成这样:

function updateNavText() {
  const $slides = $slider.find('.slick-slide');
  const currentIndex = $slider.slick('slickCurrentSlide');
  const totalSlides = $slides.length;

  // 计算上一个滑块的索引(循环场景下处理边界)
  const prevIndex = currentIndex === 0 ? totalSlides - 1 : currentIndex - 1;
  // 计算下一个滑块的索引
  const nextIndex = currentIndex === totalSlides - 1 ? 0 : currentIndex + 1;

  // 拿到对应滑块的标题
  const prevTitle = $slides.eq(prevIndex).data('slide-title');
  const nextTitle = $slides.eq(nextIndex).data('slide-title');

  // 更新按钮文本
  $('.slick-prev-btn').text(`上一页:${prevTitle}`);
  $('.slick-next-btn').text(`下一页:${nextTitle}`);
}

可选:给按钮加美化样式

如果觉得按钮太朴素,加几行CSS美化下:

.slider-navigation {
  margin: 15px 0;
  display: flex;
  gap: 10px;
}
.slick-prev-btn, .slick-next-btn {
  padding: 8px 16px;
  border: none;
  background: #2c3e50;
  color: white;
  border-radius: 4px;
  cursor: pointer;
  transition: background 0.2s;
}
.slick-prev-btn:hover, .slick-next-btn:hover {
  background: #34495e;
}

这样就搞定啦,按钮文本会跟着滑块切换自动更新,完全匹配你ACF里的内容~

内容的提问来源于stack exchange,提问作者user3615851

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:17:27