2011-10-23 78 views
7

我正在使用jquery統一的項目之一,我正在工作。由於這是管理面板,我真的沒有選擇顯示。我會解釋我的問題Jquery統一更新不起作用

我想要做的事很簡單。我添加了一些表單元素(如選擇,複選框,文本輸入)與Ajax的頁面。

除了重新設計那些動態添加的表單元素之外,每件事都可以工作。

function step2() { 
    $.post(siteUrl + "includes/ajax/members/add-subscription.php?do=step2", $("#selectedSubscribers").serialize(), function(data) { 
     $('.step2_content').html(data); 
     $.uniform.update(); 
    }); 
} 

任何有經驗的類似問題?即使我的onClick,onChange功能沒有問題(動態添加表單元素),它只是,$.uniform.update();似乎沒有工作。

我認爲處理數據可能需要更長的時間,所以$ .uniform.update();在處理數據之前被調用,因此我嘗試$.ajaxasync: false沒有運氣。

如果遇到這樣的問題或者知道解決方案的人可以幫我解決這個問題,我會很高興。

預先感謝您。

回答

14

當第一次調用$.uniform()時,它會將所有指定的元素收集到受影響元素的內部數組中。當您致電$.uniform.update()時,它只會重新調整已收集的元素。

要添加其他元素,您可能需要再次調用$.uniform(),傳遞一個僅標識這些新的動態添加元素的選擇器。

+0

感謝您的快速回復。不幸的是沒有工作。 – Revenant

+3

不知道爲什麼,但這工作$(「選擇,輸入:複選框,輸入:電臺,輸入:文件」)。 $ .uniform.update();沒有.update()仍然不起作用,我不明白爲什麼在向制服添加元素後必須使用.update()。 – Revenant

+0

$ .uniform.update();爲我工作:)謝謝 –

5

用於負載()如果修復問題的探析

$('#dialog').load(url + ' #forload', function() {$('#dialog').find('select').uniform(), $('#dialog').find('input:checkbox').uniform()}) 
+0

謝謝 - 我有一個問題,使用.load()後得到統一樣式選擇元素,這完全解決了它對我來說。 – MikeH

1

另一種解決方案可以是這樣

setTimeout("$('.uniform_element').uniform();",200); 

200或更多數目的可能需要。

+0

實際上,根據統一閱讀和[相關問題#270](https://github.com/pixelmatrix/uniform/issues/270)推薦此解決方案 –

+0

此解決方案實際運作良好。在我的情況下,複選框在內部下拉 – Prasanth

1

你試過這個嗎?

$.uniform.update("#select_element_id"); 

在我的情況下,它解決了這個問題。

舊版本的制服可能有你喜歡的問題。

0

使用此 $('。elementClass')。uniform();