jquery ui滑块-如何反转范围选择

Posted

技术标签:

【中文标题】jquery ui滑块-如何反转范围选择【英文标题】:jquery ui slider -- how to invert the range selection 【发布时间】:2012-01-29 09:19:31 【问题描述】:

我有一个有点奇怪的请求,允许用户选择滑块上的范围,但允许他们反转滑块上的范围选择。例如,如果他们在滑块上有此选择:

他们可以单击一个按钮并反转该选择。我们希望像这样直观地显示它:

滑块将继续按预期工作,但突出显示反转。我知道你可以用这个滑块做类似的事情,方法是用一个手柄在范围上设置一个固定的最大值或最小值,但不确定当使用两个手柄时是否有可能。有谁知道这是否可以通过 jQuery UI 滑块实现?

【问题讨论】:

【参考方案1】:

你可以摆弄 CSS 让它看起来像你想要的那样。滑块内部:

<----[]==========[]---->
       ^^^^^^^^^^

从滑块的外部.ui-widget-header 获取背景:

<----[]==========[]---->
 ^^^^              ^^^^

.ui-widget-content 获取其背景。所以要反转它们,你只需要一个toggleClass 来切换小部件上的这些类作为一个整体(对于外部背景)和拇指(对于内部区域)。外部区域只是滑块本身,内部区域是滑块内部的.ui-slider-range

例如,如果您有这样的滑块:

<div id="slider-range"></div>

然后你可以用这个来反转背景:

$('#slider-range, #slider-range .ui-slider-range').toggleClass('ui-widget-header ui-widget-content');

您可能想跟踪滑块在某处处于哪种模式,或者您可以只检查#slider-range .ui-slider-range 上的类。

演示:http://jsfiddle.net/ambiguous/Mu8XS/

如果您不习惯切换 jQuery-UI 类,那么您可以将滑块包裹在 &lt;div&gt; 中,在 &lt;div&gt; 上切换一个类,然后覆盖 jQuery-UI CSS:

.inverted .ui-widget-content 
    /* The usual background properties for .ui-widget-header */

.inverted .ui-widget-header 
    /* The usual background properties for .ui-widget-content */

然后您可以在包装器&lt;div&gt; 上切换.inverted 以交换背景。

【讨论】:

@Ben:我希望你宁愿正确设置 CSS 而不是运行脚本来切换类...但这是最好的解决方案,你可以在视觉上将范围样式设置为看起来像 range-reject 滑块。 +1 给穆... 罗伯特,我必须用代码来做。用户将使用按钮切换选择,因此必须在单击事件中发生。 Mu 的解决方案非常适合我的需要。谢谢。 @Ben:您还可以在单​​击处理程序中的包装器&lt;div&gt; 上添加或删除inverted 类,然后您可以使用第二种方法。什么都行。

以上是关于jquery ui滑块-如何反转范围选择的主要内容,如果未能解决你的问题,请参考以下文章

如何限制 jQuery UI 滑块的范围?

如何在 jQuery UI 中创建多范围时间滑块

Rails3/jQuery UI Datepicker - 月份和日期在保存时反转

Jquery ui 1.8.10 范围滑块不适用于 jquery 3.4.1

反转滑块效果

JQuery UI 范围滑块值