- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使我的 slider 可拖动,例如,如果我有 3 个选项:
o---|---o---||---o
我希望 slider handle 能够捕捉到最接近的可能选项,因此例如您在 | 之间释放鼠标键&||在上面的示例中,它应该自动转到中间的“o”。所以,更不用说之前是否在任何地方发布过 | ,如果在 || 之后释放,它将转到第一个“o”并转到最后一个“o”。我编写了一段代码,并向 slider 添加了 jQuery UI Draggable,但我很难找到让它捕捉到最接近选项的解决方案。
请注意,选项是动态的,因此可以是任意数字:
o---|---o
o---|---o---||---o---|||---o---||||---o
这是我写的内容,仅对两个选项执行相同的操作:
///slider Stuff
$(function() {
var select = $( "#select" );
var $max = $('#select').find('option').length;
if ($max > 1){
var slider = $( "<div id='slider'></div>" ).insertAfter( select ).slider({
min: 1,
max: $max,
step:1,
animate: 'true',
range: "min",
value: select[ 0 ].selectedIndex + 1,
slide: function(event, ui) {
$('#select').trigger('change'); ///trigger change event for the dropdown menu.
select[ 0 ].selectedIndex = ui.value - 1;
}
});
//Draggable Stuff
$("#slider .ui-slider-handle").draggable({
animate: true,
step: 1,
axis: "x",
containment: "parent",
});
////Making the draggable function work if mouse is released outside of the handle by adding mouseup event to body
$("#slider .ui-slider-handle").mousedown(function(){
$('body').one('mouseup', function() {
var sliderleft = $('#wwslider .ui-slider-handle').css('left').replace(/[^-\d\.]/g, '');
///here I tried to get the percentage of slider's position
$sliderwidth = $("#slider").css('width').replace(/[^-\d\.]/g, '');;
$sliderleft = $("#slider .ui-slider-handle").css('left').replace(/[^-\d\.]/g, '');;
$max = $('#select').find('option').length;
$selectvalue = $('#select').val();
$slidervalue = $("#slider").slider('value');
$sliderpercent = ($sliderleft/$sliderwidth)*100;
console.log($sliderpercent);
///Okay, here is what I did for two options, If it is released at some percent lower than a certain amount, set value to 1, else set it to two, But now I want to be able to do it automatically with any number of options.
if($sliderpercent <= 33.3) {
$("#slider").slider('value',1);
$('#select').trigger('change');
}
else {
$("#slider").slider('value',2);
$('#select').trigger('change');
}
});
});
//Draggable
$( "#select" ).change(function() {
slider.slider( "value", this.selectedIndex + 1 );
var $currentscs = $('#select').find(":selected").text();
$('#holder li').fadeOut('fast');
$('#holder li[data-scs-id*='+$currentscs+']').fadeIn('fast');
});
}
});
正如您在 fiddle 中看到的,如果您从下拉列表中选择一个选项,一切都很完美,会显示相应的 li 并且 slider 会移动到正确的位置,我想要的是让它也可以与 slider 一起使用,如果您移动 slider ,我希望在下拉列表中选择距离 slider 释放点最近的值。希望它足够清楚。对此的任何帮助将不胜感激。
如需更多说明,请查看this jQuery UI slider 的默认功能绑定(bind)到“<Select>
”。我想我想要的已经在那里了,我只需要一些帮助来弄清楚如何使用它:正如您所看到的,当您单击选项 2 附近的某个位置时,它会转到选项 2 并在下拉列表中选择它,如果您单击 slider 中的任意位置,它会转到最近的选项,我希望拖动时会发生完全相同的事情,所以当拖动 slider ,松开 slider 后, slider 应转到距松开点最近的选项。
最佳答案
如果我理解正确,那么您首先尝试完成的是 slider 和选择元素之间的双向通信?
使用小部件工厂来扩展 slider 并将 handle 变成可拖动的可能解决方案: fiddle
$.widget("ui.dragSlider", $.ui.slider, {
_create: function () {
this._super('_create');
var drWidth = this.element.context.clientWidth;
var drMax = this.options.max - this.options.min;
var drStep = drWidth / drMax;
var perc = drStep / drWidth;
// turn handle into draggable widget
this._handleDraggable(this.handle, drWidth, drMax);
// add a basic ruler to the slider
this._addVisuals(drMax, drStep);
},
// setup handle as a draggable object
// wire up draggable event handlers with slider event handlers
_handleDraggable: function ($handle, drWidth, drMax) {
var that = this;
$handle.draggable({
animate: true,
axis: "x",
containment: "parent",
drag: function (event, ui) {
// trigger slide event on drag
that._trigger("slide", event, ui);
},
stop: function (event, ui) {
// calculate percentage of handle's position relative to
// the slider width
var posPer = Math.round(ui.position.left / drWidth * 100);
// calculate value for the slider based on handles position
var sliderPos = (posPer / 100 * drMax) + that.options.min;
// set new value(will trigger change event)
that._setOption("value", sliderPos);
// trigger slider's stop event
that._trigger("stop", "slidestop", ui);
}
});
},
// add a "basic ruler"
_addVisuals: function (drMax, drStep) {
for (var i = 0; i <= drMax; i++) {
if (i == 0) {
$("#value").append("<span>|</span>");
} else {
$("#value").append("<span style='padding-left:" + (drStep - 3) + "px'>|" + "</span>");
}
}
},
});
// implementation of custom slider
$(document).ready(function () {
$("#dragSlider").dragSlider({
min: 1,
max: 5,
animate: true,
slide: function (event, ui) {
$("#location").html(ui.position.left);
},
change: function (event, ui) {
$("#select").val(ui.value);
},
});
$("#select").change(function (e) {
$("#dragSlider").dragSlider("value", $(this).val());
});
});
关于jQuery UI slider 可拖动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17245103/
情况我想使用 ui-date 在我的应用程序中设置/编辑日期。我使用最新稳定版本的 Angular、Angular-UI、JQuery-UI 等。 问题一旦使用日期选择器选择了日期,我的模型中的日期将
编辑: jQuery UI 可选择小部件内置了一个回调,stop,我需要知道如何以编程方式触发此事件。 (措辞不佳)我已将事件监听器附加到 jQuery UI Selectable Widget 。如
我正在尝试建立一个下一个JS与尾风用户界面提供的反应组件的网络应用程序。顺风用户界面是在幕后使用无头用户界面。。默认情况下,Next JS将构建服务器端组件,除非您在页面顶部添加“使用客户端”。不幸的
我正在尝试建立一个下一个JS与尾风用户界面提供的反应组件的网络应用程序。顺风用户界面是在幕后使用无头用户界面。。默认情况下,Next JS将构建服务器端组件,除非您在页面顶部添加“使用客户端”。不幸的
我正在尝试应用这个 SlickGrid 示例: http://mleibman.github.com/SlickGrid/examples/example4-model.html 到我自己的网络项目。
我想整理我的 Schemas为我的实体类生成,DTO 类位于 Springdoc ui . 我可以对 tags 进行排序和 operations通过以下配置 yml文件,但我的模式不是按排序顺序排列的
有谁知道阻止 ui-sref 重新加载状态的方法吗? 我无法通过“$stateChangeStart”事件执行此操作,因为 ui-sref 仅更改参数而不更改状态名称。 我的左边是书单,左边是书的详细
我正在 jquery ui 对话框中使用 jquery ui 自动完成小部件。当我输入搜索文本时,文本框缩进(ui-autocomplet-loading)但不显示任何建议。 var availabl
我正在尝试将 Kendo UI MVVM 框架与 Kendo UI 拖放机制结合使用;但我很难找到如何将数据从 draggable 对象中删除。 我的代码是这样的...... var viewMode
Kendo UI Web 和 Kendo UI Core 之间有什么区别 https://www.nuget.org/packages/KendoUIWeb http://www.nuget.org/
我正在尝试将 Kendo UI MVVM 框架与 Kendo UI 拖放机制结合使用;但是我很难找到如何从 draggable 对象中删除数据。 我的代码是这样的…… var viewModel =
使用 Angular JS - UI 路由器,我需要从我的父 View project.details 到我的 subview project.details.tasks 进行通信。我的 subvie
KendoUI 版本 2013.3.1119使用 Kendo MVVM 我有一个我构建的颜色选择器,它使用平面颜色选择器和使用调色板的颜色选择器。它们都可以正常运行,但平面颜色选择器的布局已关闭, s
我在非 UI 线程上,我需要创建并显示一个 SaveDialog。但是当我尝试显示它时:.ShowDialog() 我得到: "An unhandled exception of type 'Syst
我正在试验 jquery-ui 并查看和克隆一些示例。在一个示例(自动完成的组合框)中,我看到一个带有 ui-widget 类的 anchor (a) 元素,它与包含的 css 文件中的 .ui-wi
我需要返回一个 UI 列表,我用这个方法: getList(): Observable { return this.httpClient.get("/api/listui").pipe
我有 ui-grids在 angular-ui-tabs ,它们位于 ng-if 中以避免呈现问题。如果有更多数据并且网格进入滚动模式,则单击选项卡时数据会完全消失。我相信这是一个 ui-grids-
这似乎是一个通用的问题,与其他几个 React 开源框架相比,我真的很喜欢 Material ui 的可扩展性。 问题 “@material-ui/core”和“@material-ui/lab”中的
我有一个根页面(index.html),带有侧边栏(“菜单”)和主要内容 div(“主”),因此有两个 ui-view div - 一个称为“菜单”,一个称为“主”。 当主要内容区域有网站列表 (/s
有人在http://jsfiddle.net/hKYWr/上整理了一个很好的 fiddle 。关于使用 angular-ui 和 jqueryui sortable 来获得良好的可排序效果。 如何在两
我是一名优秀的程序员,十分优秀!