我有一个带有jQuery滑块的页面,移动这些滑块会将值发送到服务器。同时,每秒查询服务器以获取当前状态(对于页面上的所有字段)。
所以我需要知道滑块(旋钮)是否被聚焦,或者是否被玩弄,因此设置从服务器返回的值的ajax代码可以避免尝试设置聚焦滑块。否则它会在尝试移动滑块时反弹。
当前代码:
// Called by ajax's return from server, v is the server's value, to set on this slider
function ReportObjectSize (v)
{
$('#slider_objsize').slider("option", "value", v);
}
我认为我需要的是:
function ReportObjectSize (v)
{
if (!$('#slider_objsize').slider.IsFocused()) // Some way to tell if it's focused
$('#slider_objsize').slider("option", "value", v);
}
或者通常有更好的方法来做到这一点?
答案 0 :(得分:1)
您可以查看#slider_objsize .ui-slider-handle:focus
是否与任何内容匹配:
if($('#slider_objsize .ui-slider-handle:focus').length)
// The handle has focus.
else
// The handle doesn't have focus.
演示:http://jsfiddle.net/ambiguous/YKRme/1/
请注意,jQuery 1.6中添加了:focus
selector,因此上述版本不适用于早期版本的jQuery。
或者,您可以挂钩start
和stop
事件,以跟踪用户何时开始和停止摆弄滑块:
var sliding = false;
$("#slider_objsize").slider({
// ...
start: function() { $('#slider_objsize').data('sliding', true ) },
stop: function() { $('#slider_objsize').data('sliding', false) },
});
然后看看$('#slider_objsize').data('sliding')
,看看他们是否在摆弄它。