2015-09-09 35 views
1

在我的項目中,一個頁面可以有一個或多個選項,選項填充數據庫值,意味着具有不同ID的選擇字段可以具有相同的選項。在jquery中使用變量作爲佔位符更新選擇選項

例如:

<select id="set-0-costID"> 
    <option value="1">Name1</options> 
    <option value="2">Name2</options> 
    <option value="3">Name3</options> 
</select> 
<select id="set-1-costID"> 
    <option value="1">Name1</options> 
    <option value="2">Name2</options> 
    <option value="3">Name3</options> 
</select> 

如果體育選項== 1的文本在ID爲「set-0-costID」的字段中更改我想使用Jquery更新ID爲「* costID」的所有其他字段。

此代碼:

$("[id$='costID']").each(function(index, elem){ 
    var $el = $('#' + elem.id); 
    $('#' + elem.id + ' option[value="1"]').text('Name1new'); 
    $el.selectpicker("refresh"); 
}); 

但我必須更加靈活,要存儲在一個字典和環通這一切更多鈔票的字段名。

此代碼不起作用。沒有錯誤,但選項未更新。

var fields=['cost1ID', 'cost2ID']; var field_name=""; 
for (f in fields) { 
    field_name = fields[f]; 
    $("[id$=field_name]").each(function(index, elem){ 
     var $el = $('#' + elem.id); 
     $('#' + elem.id + ' option[value="1"]').text('Name1new'); 
     $el.selectpicker("refresh"); 
    }); 
}; 

我想Jquery將field_name解釋爲搜索名稱而不是變量。 如何更改我的代碼以使其工作? 感謝

回答

3

我不知道,這將解決問題,但試圖取代:

$("[id$=field_name]").each(function(index, elem){ 

通過:

$("[id$='"+field_name+"']").each(function(index, elem){ 

希望這有助於。

+0

它的工作。非常感謝你。 – sascha2014

0

位晚了,但你有沒有考慮數據屬性?這可能會讓你的代碼更加靈活。

在這裏,我已經創建稱爲data-update的屬性,它列出了每個ID來更新(由空格分隔):

<select id="set-0-costID" data-update="#set-1-costID #set-2-costID"> 
    <option></option> 
    <option value="1">Name1</option> 
    <option value="2">Name2</option> 
</select> 
<select id="set-1-costID" data-update="#set-0-costID #set-2-costID"> 
    <option></option> 
    <option value="1">Name1</option> 
    <option value="2">Name2</option> 
</select> 
<select id="set-2-costID" data-update="#set-0-costID #set-1-costID"> 
    <option></option> 
    <option value="1">Name1</option> 
    <option value="2">Name2</option> 
</select> 

的jQuery:

$(document).on('change', '[data-update]', function(){ 
    var a = $(this).data('update').split(' '), index; 
    for (index = 0; index < a.length; ++index) { 
     $(a[index]).val($(this).val()); 
    } 
}); 

JSFiddle demo with IDs

這也將與類一起工作:JSFiddle demo with classes

相關問題