2012-03-15 53 views
5

我從ajax調用服務器上得到一個錨標籤代碼片段html。我如何「刷新」,以便jquery mobile可以將必要的類添加到鏈接?如何在jquery Mobile中重新呈現動態生成的錨標記?

例如是jQuery Mobile的產生具有UI鏈接的鏈接:

<a class="ui-link" href="http://www.google.com">http://www.google.com</a> 

如何確保正確的樣式是在新生成的錨標記附加?

+0

運行函數作爲Ajax調用的'success'回調的一部分? – 2012-03-15 19:04:22

+0

你可以發佈你的JS代碼嗎?你試圖「刷新」什麼小工具? – Jasper 2012-03-15 19:05:39

回答

1

如果你想刷新已經初始化,那麼你可以刷新每種類型的控件小部件的使用它的相應的功能:

$('.ui-btn').button('refresh'); 

通知我用.ui-btn類選擇對接在元素上,一旦按鈕被初始化,這個類就會被添加,所以你可以確定你正在刷新已經初始化的按鈕控件。

文檔:http://jquerymobile.com/demos/1.1.0-rc.1/docs/buttons/buttons-methods.html

如果您需要初始化那些還沒有被初始化的窗口小部件,那麼你只要省略'refresh'或使用.trigger('create')

$('[data-role="button"], button, input[type="button"], input[type="submit"]').not('.ui-btn').button();//or .trigger('create'); 

注意這裏我省略了已初始化部件通過使用.not('.ui-btn'),所以這隻會初始化未初始化的小部件。如果你試圖初始化一個已經初始化的小部件,那麼你會得到一個錯誤(如果你嘗試刷新一個尚未初始化的小部件,就會發生錯誤)。

更新

如果你的HTML是由服務器輸出的,那麼你可以將它們添加到DOM之前初始化部件:

$.ajax({ 
    ... 
    success : function (serverResponse) { 
     var $out = $(serverResponse); 
     //if there is a container with elements inside it, use `.find()`, 
     //if all the elements are siblings at the top level then use `.filter()` 
     $out.find('a').button(); 
     $('body').append($out); 
    } 
}); 

您還可以使用.buttonMarkup()功能更新按鈕部件: http://jquerymobile.com/demos/1.1.0-rc.1/docs/buttons/buttons-options.html