2012-03-01 13 views
1

データ-テーマに(「pageinit」、機能()メソッドを生きて、私はこの機能を書いた...のjQuery Mobileは、私のフッターに

jQuery('#page').live('pageinit', function() { 
$('.widget ul').attr('data-inset', 'true'); 
$('.widget ul').attr('data-theme', 'd'); 
$('.widget ul').attr('data-dividertheme', 'b'); 
$('.widget ul').attr('data-role', 'listview'); 
$('.widget ul').listview(); 
$('a.post-edit-link').attr('data-inline', 'true'); 
$('a.post-edit-link').attr('data-role', 'button'); 
$('a.post-edit-link').button(); 
$('#commentform').attr('data-theme', 'e'); ... 

だから、最後の行にデータ・テーマを適用する方法??。方法は...「リストビュー」や「ボタン」

として私も最初の属性に「ウィジェットUL」を適用する方法を疑問に思う、(」ウィジェットUL

$どのようなものです:最初に')

が機能していません。

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

よろしくお願いいたします、

V.

答えて

2

.widget ul:first.widget要素の子孫である第一ul要素を選択します。 ulの最初のリスト項目を選択する場合は、.widget ul li:firstが必要です。

フォーム自体はjQuery Mobileで初期化されないので、フォームをターゲットにする代わりに、特定の入力ウィジェットをターゲットにして初期化する必要があります。あなたがウィジェットを更新するのではなく、それらを初期化したいときには少しトリッキー取得

$('#commentform').find('input, textarea').trigger('create'); 

$('#commentform').find('input[data-type="slider"]').slider('refresh').end() 
       .find('input[type="text]').textinput('refresh').end() 
       .find('input[type="checkbox"], input[type="radio"]').checkboxradio('refresh'); 

あなたがそれらすべてを選択し、それらの上に.trigger('create')を呼び出すことができる要素の束を初期化するために

また、同じ要素を複数回選択するのではなく、関数呼び出しを連鎖させることでコードを最適化することができます。

$('.widget ul').attr('data-inset', 'true') 
       .attr('data-theme', 'd') 
       .attr('data-dividertheme', 'b') 
       .attr('data-role', 'listview') 
       .listview(); 

$('a.post-edit-link').attr('data-inline', 'true') 
        .attr('data-role', 'button') 
        .button(); 

それとも.attr()にオブジェクトが1回の関数呼び出しですべての属性を設定するために渡すことができます。

$('.widget ul').attr({ 
        'data-inset'  : true, 
        'data-theme'  : 'd', 
        'data-dividertheme' : 'b', 
        'data-role'   : 'listview' 
       }).listview(); 

$('a.post-edit-link').attr({ 
         'data-inline' : true, 
         'data-role' : 'button' 
        }).button(); 
+0

あなたの明確な説明と助言をいただきありがとうございます。今私はよく理解しています...道路が長い場合でも! :) – Vincent

+0

@Vincentあなたが見つけた答えがどういうものなのか疑問に思っています...論理的には、答えのコードはあなたのコードとまったく同じものです... '$( '。widget')。first( ' ul '); 'は' $('。widget ul:first ') 'と同じものを返します。 – Jasper

+0

これはチェーンの効果を確認するのに最適な場所で、2つのパラメータの代わりにオブジェクトを使用する点の違いを示しています。 – Relic

0

ていないデータ・theneのコメントフォームのadditonが動作していない理由を確認してください...

jQuery('#page').live('pageinit', function() { 
    var ulList = $('.widget ul'), aTag = $('a.post-edit-link') 
    ulList.attr('data-inset', 'true'); 
    ulList.attr('data-theme', 'd'); 
    ulList.attr('data-dividertheme', 'b'); 
    ulList.attr('data-role', 'listview'); 
    ulList.listview(); 
    aTag.attr('data-inline', 'true'); 
    aTag.attr('data-role', 'button'); 
    aTag.button(); 
    $('#commentform').attr('data-theme', 'e'); ... 

最初に試してください(その理由は、そのjQueryオブジェクトのたびにDOMを解析し、メモリに保存する必要はなく、処理時間が大幅に節約されます)。選択問題の場合:

$('.widget').first('ul'); 
+0

jQuery Mobileのドキュメントページでフォームをチェックアウトすると、フォームには設定する 'data-theme'属性がないことがわかります。したがって、jQuery Mobileで設定した設定は無視されます。 – Jasper

+0

@Relicありがとうございます。私はあなたとジャスパーに同時に投票することはできません。 – Vincent

+0

それはクールだ、彼は完全にあなたの答えをキャプチャ! – Relic

関連する問題