2011-07-19 41 views
5

嗨我有困難在某些原因動態地改變jquery mobile的某些屬性。我可以看到,當我調用我使用的各個方法時,標記中的屬性被更改,但元素的外觀不變。是否需要在JQuery Mobile中重新初始化列表等?jquery移動數據 - 圖標

通過這裏的方法是一些代碼來告訴你我是如何設置的屬性:

$('.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-刷新這個按鈕的主題這有點幫助,但它仍然很混亂,並且不能有效地刷新元素。另外數據圖標保持不變,這是相當煩人的。主題將會改變,但不會是數據圖標。 –

回答

2

你應該真的使用JQM選擇器,jqmData()在documentation中指定。

例如

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

希望這有助於解決您的問題

+2

此代碼在視覺上似乎沒有任何效果。 –

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

這將改變它的飛行。這裏是我的代碼:這裏

$(".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項目。 –

+0

$(this).buttonMarkup({icon:「star」});爲我工作動態更新列表視圖圖標。 –