1

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);
}

または、一般的にこれを行うためのより良い方法がありますか?

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 では機能しないことに注意してください。

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')、彼らがそれをいじっているかどうかを確認します。

デモ: http://jsfiddle.net/ambiguous/Gn5cX/

于 2012-01-22T06:39:00.647 に答える