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

如何将滑块两侧的数值状态与价格筛选滑块实现联动绑定?

滑块数值联动实现方案

你当前使用的是Bootstrap Slider组件,仅需两步即可实现左右数值随滑块拖动同步更新:

1. 修改PHP模板,给左右数值标签加标识

修改价格滑块、评分滑块输出的PHP代码,给包裹滑块的.slide容器内的左右两个<span>标签添加专属类名,方便JS定位更新:

<div class="slide">
    <!-- 左侧最小值标签添加slide-min-val类 -->
    <span class="slide-min-val"><?php echo $values->min; ?></span>
    <input id="<?php echo $this->id; ?>" name="<?php echo $this->name; ?>" data-slider-label="<?php echo apply_filters( 'at_filter_price_label', ' ' . at_get_default_currency( true ) ); ?>" type="text" class="bt-slider" value="<?php if ( $this->value ) {
        echo $this->value;
    } ?>" data-slider-min="<?php echo $values->min; ?>" data-slider-max="<?php echo $values->max; ?>" data-slider-step="<?php echo $steps; ?>" data-slider-value="[<?php if ( $this->value ) {
        echo $this->value;
    } else {
        echo $values->min . ',' . $values->max;
    } ?>]">
    <!-- 右侧最大值标签添加slide-max-val类 -->
    <span class="slide-max-val"><?php echo $values->max; ?></span>
</div>

评分滑块的PHP逻辑和价格滑块一致,同样添加上述两个类名即可。

2. 新增JS联动逻辑

将以下代码加入页面自定义JS文件,或放在页脚</body>标签前即可生效:

原生JS版本

document.addEventListener('DOMContentLoaded', function() {
    // 适配所有bt-slider滑块(价格、评分通用)
    document.querySelectorAll('.bt-slider').forEach(function(sliderEl) {
        const sliderInstance = sliderEl.slider;
        const slideContainer = sliderEl.closest('.slide');
        const minText = slideContainer.querySelector('.slide-min-val');
        const maxText = slideContainer.querySelector('.slide-max-val');

        // 监听滑动事件,实时更新数值
        sliderInstance.on('slide', function(values) {
            minText.innerText = values[0];
            maxText.innerText = values[1];
        });

        // 若不需要实时更新,只想滑动停止后再修改,可将上面的事件替换为slideStop
        // sliderInstance.on('slideStop', function(values) {
        //     minText.innerText = values[0];
        //     maxText.innerText = values[1];
        // });
    });
});

jQuery版本(适配老项目)

$(function() {
    $('.bt-slider').on('slide', function(e) {
        const $wrap = $(this).closest('.slide');
        $wrap.find('.slide-min-val').text(e.value[0]);
        $wrap.find('.slide-max-val').text(e.value[1]);
    });
});

注意:如果你的滑块初始化逻辑晚于DOM加载完成事件,需将上述代码放在滑块初始化代码之后执行,避免找不到滑块实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:45:07