1

我有一个带有 jQ​​uery 滑块的页面,移动这些滑块会将值发送到服务器。同时,每秒查询一次服务器以获取当前状态(针对页面上的所有字段)。

所以我需要知道一个滑块(旋钮)是否被聚焦,或者以其他方式被玩弄,所以设置从服务器返回的值的 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);
}

或者也许有更好的方法来做到这一点?

4

1 回答 1

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/

请注意,:focus选择器是在 jQuery 1.6 中添加的,因此上述内容不适用于早期版本的 jQuery。

或者,您可以挂钩startstop事件来跟踪用户何时开始和停止摆弄滑块:

var sliding = false;
$("#slider_objsize").slider({
    // ...
    start: function() { $('#slider_objsize').data('sliding', true ) },
    stop:  function() { $('#slider_objsize').data('sliding', false) },
});

然后看看$('#slider_objsize').data('sliding')他们是否在摆弄它。

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

于 2012-01-22T06:39:00.647 回答