1

編集:これは、純粋な JavaScript オブジェクトの質問と見なすことができます。コードはここにあります: jquery.mobile-1.1.0.js

jQuery モバイル JS オブジェクトのプロパティにアクセスする必要がありますが、その方法がわかりません。jquery.mobile-1.1.0.js と mobile.slider は次のとおりです (5967 行の拡張を参照)。

$.widget( "mobile.slider", $.mobile.widget, {
  ...
  _create: function() {
    ...
    $.extend( this, {
      slider: slider,
      handle: handle,
      valuebg: valuebg,
      dragging: false,
      beforeStart: null,
      userModified: false,
      mouseMoved: false
    });

主に読みたいプロパティは「ドラッグ」です。

私は以下を使用してメソッドを実行できることを知っています:

$("#slider").slider("refresh")

プロパティにアクセスする同様の方法はありますか?

ありがとう

4

1 に答える 1

0

マウス/タップ イベントをバインドすることなく、代わりに既に配置されている JQM 機能を使用して、スライダーをドラッグするユーザーに対応する方法。

JQM スライダー オブジェクトの「ドラッグ」変数にアクセスするために、次のようにオブジェクトを拡張しました。

$(document).bind("mobileinit", function(){
  $.mobile.slider.prototype.getDragging = function(){
    return this.dragging;
  };
});

これで、ユーザーが行った変更のみに反応するように選択できます。

$("#slider").live('change',function(){
  if($("#slider").slider("getDragging"))){
    console.log('User is dragging slider to new value'); 
  }
  else {
    console.log('Program changed value. (or user typed in visible textbox)') ;
  }
});

スライダーのテキストボックスを非表示にすると、次の利点があります。

  1. 「変更」イベントを使用して、プログラムがスライダーの値を変更したときにトリガーされることなく、ユーザーのドラッグに反応します。
  2. 私のプログラムがスライダーの値を変更しようとするとき、最初にユーザーが現在スライダーをドラッグしていないことを確認できます。
于 2012-06-02T16:29:55.827 に答える