我想使用jquery ui制作一个带有两个手柄的滑块,这两个手柄之间保持最小的间距。如果左手柄试图越过右手柄,则应按下右手柄。反之亦然。这是一个例子(永远不要重复,这不重要):
只要移动速度慢,它就能工作但如果鼠标移动得太快,则在“推动”方案中失败。我认为在'slider'事件中设置滑块值可能是错误的。
答案 0 :(得分:4)
这很有用。我从$.ui.slider.prototype._slide
复制了代码并删除了检查左手柄是否大于右手柄的部件。现在运作良好。
$.ui.slider.prototype._slide = function ( event, index, newVal ) {
var otherVal,
newValues,
allowed;
if ( this.options.values && this.options.values.length ) {
otherVal = this.values( index ? 0 : 1 );
if ( newVal !== this.values( index ) ) {
newValues = this.values();
newValues[ index ] = newVal;
// A slide can be canceled by returning false from the slide callback
allowed = this._trigger( "slide", event, {
handle: this.handles[ index ],
value: newVal,
values: newValues
} );
otherVal = this.values( index ? 0 : 1 );
if ( allowed !== false ) {
this.values( index, newVal, true );
}
}
} else {
if ( newVal !== this.value() ) {
// A slide can be canceled by returning false from the slide callback
allowed = this._trigger( "slide", event, {
handle: this.handles[ index ],
value: newVal
} );
if ( allowed !== false ) {
this.value( newVal );
}
}
}
}