我有一个下拉列表,我需要用jquery填充,因为列表内容会改变。我在这个网站上找到了以下代码的基础。但它被编码为运行一定数量的项目。这是我的jsfiddle。您可以查看按钮是否单击列表内容更改。但是列表是从数据库中读取的,可能有1个项目或100个项目。所以我添加了一个循环来读取列表并将其添加到选项列表中,但无论我尝试了什么都失败了。我的最后一次尝试是here。
我的问题是如何改变:
var options = [
{text: cars[0], value: 1},
{text: cars[1], value: 2},
{text: cars[2], value: 3}
];
这样的事情:
var options '';
for (var i = 0; i < cars.length; ++i) {
options =
{text: cars[i], value: i},
;
}
options = [ + options + ];
以下是我第一个jsfiddle的代码:
<script>
var getlist = function() {
var cars = ["Saab", "Volvo", "BMW"];
var options '';
for (var i = 0; i < cars.length; ++i) {
options =
{text: cars[i], value: i},
;
}
options = [ + options + ];
$("#v_make").replaceOptions(options);
}
$('#button').click(getlist);
(function($, window) {
$.fn.replaceOptions = function(options) {
var self, $option;
this.empty();
self = this;
$.each(options, function(index, option) {
$option = $("<option></option>")
.attr("value", option.value)
.text(option.text);
self.append($option);
});
};
})(jQuery, window)
</script>
<select id="v_make">
<option>start</option>
</select>
<input type="button" id="button" value="Click Me" />
答案 0 :(得分:1)
您可以通过将cars
数组传递给函数来简化选项的构建:
var getlist = function() {
var cars = ["Saab", "Volvo", "BMW"];
$("#v_make").replaceOptions(cars);
}
$('#button').click(getlist);
(function($, window) {
$.fn.replaceOptions = function(options) {
var self, $option;
this.empty();
self = this;
$.each(options, function(index, option) {
$option = $("<option></option>")
.attr("value", index)
.text(option);
self.append($option);
});
};
})(jQuery, window)
更新的JSFiddle是here。
答案 1 :(得分:0)
尝试以下
$(document).ready(function() {
var x = 0;
var y = 0;
$('#addBtn').on('click', function() {
$('<option>').val(x).text(y).appendTo('#select1');
x++
y++
});
})
&#13;
<select id="select1" style="width:100%;">
<option value="0" selected>(Please select an option)</option>
</select>
<button id="addBtn">Add</button>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
&#13;