2011-08-05 23 views
6

私は、jQueryを使って(そしてさまざまなjQuery-UIツールを使って)ビルドされたアプリケーションを持っています。jQuery Mobileで素早くエレメントを作成できますか?

何らかの理由で、私はそれをスマートフォン/タブレットコンピュータに移植しなければならず、そのためにjQuery Mobileを使用することに決めました(変更回数を最小限に抑えるため)。

私のバニラアプリでは、ユーザーのやり取りに応じて、その場でいくつかの要素を作成しました。

例えばスライダーは、(pはのparamsの束を持つオブジェクトです)のように作成することができます。

function createSlider(p){ 
    return $("<div/>",{ 
       "id":p.id, 
       "class":p.divClass, 
      }).slider({ 
       "orientation": p.align, 
       "min":p.constraint.min, 
       "max":p.constraint.max, 
       "step":p.step, 
       "value":p.curVal, 
       "animate":"normal" 
       /*and some event handling here, but it doesn't matter*/ 
      }); 

} 

そして、それは見栄えの良いスライダーを生成します。今では、次のようになります。

function createSlider(p){ 
    return $("<range/>",{ 
      "id":p.id, 
      "class":p.divClass, 
      "min":p.constraint.min, 
      "max":p.constraint.max, 
      "step":p.step, 
      "value":p.curVal, 
    }); 
} 

しかし、それはその場で作成だとして、ページのロードにjQueryのモバイルによって行われたすべてのものはそれで行われていません。

スライダーをHTMLに書き込まずに初期化を強制する方法はありますか?

ありがとうございました。

EDIT:私はそれはしかし、これはまだ動作しませんcontainer.trigger("create"); 使用して達成することができdocで見つかりました。

EDIT2:Ok createが解決策でした。

答えて

4

文書によると(問題の編集を参照)、含まれている要素にtrigger("create")を使用すると動作します。

そして、その仕事をするために、あなたもその範囲を覚えておく必要は入力タイプではなく、タグ...

作業するソリューションです:追記として

function createSlider(){ 
    return $("<input/>",{ 
      "type":"range", 
      "id":"sl", 
      "min":0, 
      "max":15, 
      "step":1, 
      "value":1, 
    }); 
} 

function appendSlider(){ 
    $("#yourdiv").append(createSlider()).trigger("create"); 
} 

、jQueryのためのドキュメントモバイルには検索オプションがありません。

+0

これは私のためには動作しません。 .trigger( "作成")を使用すると、ドロップダウン()が奇妙に見え、予期せぬ動作をします。 – Ted

0

コンテンツが追加されるコンテナに.page()を呼び出してみてください。また、返すコンテンツに.page()を追加することもできます。

+0

これは機能しませんでした。私もトリガー( "作成")を試みた。どんな成功もなしに。 –

+0

'page()'の呼び出しの仕方を投稿できますか? –

+0

あなたが行く:http://jsfiddle.net/bZVmk/2/ –

関連する問題