2011-07-19 20 views
5

こんにちは私は何らかの理由でjquery mobileのいくつかの属性を動的に変更するのが難しいです。私は使用しているそれぞれのメソッドを呼び出すと、マークアップで属性が変更されているのがわかりますが、要素の外観は変わりません。 Jquery Mobileのリストなどを再初期化する必要はありますか?ここところでjquery mobile data-icon

は、私は属性を設定していますどのようにお見せするためにいくつかのコードです:

$('.className').each(function(){ 
    if ($(this).text() == tempLoc){ 
    console.log('FOUND MATCH WITH tempLoc and ' + $(this).text()); 
    $(this).attr('data-icon','alert'); 
    $(this).attr('data-theme','e'); 
} 
}); 

私は、これはコードで働いているが、要素が更新または外観ワイズ変更されません言ったように。 アイデア

更新: 私はデータアイコンを更新する方法を見つけましたが、それでももちろん面倒で不必要にそうです。あなたは、以下の方法を使用して、データ・アイコンにアクセスすることができます。

$(this).children('div.ui-btn-inner').children('span.ui-icon').removeClass('ui-icon-arrow-r'); 
$(this).children('div.ui-btn-inner').children('span.ui-icon').addClass('ui-icon-alert'); 

その場合、$(これは)ボタン自体を指し、それはUI-BTN-インナーチャイルドのスパン年代にアイコン自体が発見されました。 ui-icon-arrow-rが表示されます。この場合、使用しているクラスを置き換えてください。誰かがボタンを正しくリフレッシュする方法を知っていれば、私はそれを感謝します。

+0

は長くない、この質問を投稿した後、この出くわし:http://forum.jquery.com/topic/how-to- refresh-the-theme-of-a-buttonこれはちょっと役立ちますが、それはまだ乱雑であり、効果的に要素を適切にリフレッシュしません。さらに、データアイコンも同じままで、かなり迷惑です。テーマは変更されますが、データアイコンは変更されません。 –

答えて

2

実際には、documentationに指定されているように、jqmData()にJQMセレクタを使用する必要があります。

これはこれは、その場でそれを変更します

+2

このコードは視覚的には効果がないようです。 –

12
$("#myButtonName").buttonMarkup({ icon: "star" }); 

あなたの問題を解決するのに役立ちます

$('.className').each(function(){ 
    if ($(this).text() == tempLoc){ 
    console.log('FOUND MATCH WITH tempLoc and ' + tempLoc); 
    $(this).jqmData('icon','alert'); 
    $(this).jqmData('theme','e'); 
    } 
}); 

希望。ここに私のコードは次のとおりです。

$(".menu-button").toggle(
    function() 
    {    
     $(this).buttonMarkup({ icon: "star" }); 
     $(".navigation-menu-container").show(); 
    }, 
    function() 
    { 
     $(".navigation-menu-container").hide();  
    } 
); 

はこちらのドキュメントを参照してください:

http://jquerymobile.com/test/docs/buttons/buttons-options.html

+0

listview-itemも同様に動作するようです。 –

+0

$(this).buttonMarkup({icon: "star"});リストビューアイコンを動的に更新するために私のために働いた。 –