我需要更改使用jQuery SelectPicker的下拉列表的所有<option ...> ... </option>
元素中的文本。沒有一個值應該被影響。如何更改全部<option> SelectPicker中的文本
最初,當選項被填充時,在選項文本中有一個佔位符XX
。例如:
GHO.502/TT3-XX04-F.P1
所有的選項文本都有這種類似的格式。我需要遍歷每個選項文本,更改XX
值並保存更改。
更改取決於可能來回更改的另一個控件,但XX
明顯在第一次更改後不再有效。所以,我想我可以節省的document.ready初始<select>
:
_savedSelect = $('#mySelect');
此時需要的時候我可以通過_savedSelect迭代,讀取包含了XX
佔位符默認文本,修改每個然後將它們保存到<option>
實際的元素<select>
。
修改所有文本後:
$("#mySelect").selectpicker('refresh');
但我不知道如何遍歷所有選項中選擇保存,獲取每個文本,更換XX
佔位符,然後將其保存到實際的選擇選項。
任何人都可以給我一個想法如何做到這一點?
編輯
我工作了。每個部分:
$("#mySelect > option").each(function() {
$newtext = HOW TO GET CORRESPONDING TEXT FROM _savedSelect??;
this.text = $newtext.replace('XX', $('#someInput').val());
});
$("#mySelect").selectpicker('refresh');
我如何從已保存的選擇對應的文本值?
UPDATE
一個@ madalinivascu的答案有點工作,但不完全:
$("#mySelect> option").each(function() {
$textarr = $(this).text().split('XX');
$newtext = $textarr[0] + $('#someInput').val() + $textarr[1];
$(this).text($newtext);
});
但這隻會工作以來的第一次XX
被替換的輸入控制被改變。在我上面的描述中,我提到將#mySelect
的初始狀態保存在一個變量中。這樣我總是會在文本字符串中包含佔位符 - 我的問題是我不知道如何訪問保存的變量中的文本值。
使用$ 。每個循環選項 – madalinivascu
爲什麼你不在服務器端執行此操作? – madalinivascu
@madalinivascu這是一個客戶端規範。 XX根據用戶在前端的輸入而改變。在選擇下拉菜單中最多可以有幾百個選項。阿賈克斯往返肯定會非常緩慢。我甚至不確定我能夠在前端足夠快地完成它。它可以在服務器端完成,但它沒有任何意義,只需要更長的時間。 – rwkiii