我目前有一个dorp下载列表从Json数组中填充,这很好,但是当我编辑我的选择时,我需要删除已经选中的选项,这样它就不会出现两次
for (i = 0; i < datain.length; i++) {
if (datain[i].Name == course) {
selectedCourseId = datain[i].Id;
selectedCourseName = datain[i].Name;
}
$('#EditCourseSelect').append($('<option></option>').attr("value", datain[i].Id).text(datain[i].Name));
}
$('#EditCourseSelect').prepend("<option value=" + selectedCourseId + " selected='selected'>" + selectedCourseName + "</option>");
非常感谢任何帮助
答案 0 :(得分:1)
只需使用CSS selector
$('#EditCourseSelect option:selected').remove()
或jQuery
.find()
$('#EditCourseSelect').find("option:selected").remove()
在我为你制作的pen中测试
答案 1 :(得分:1)
您可能只需要避免在for循环中创建它,这样就不必删除它
for (i = 0; i < datain.length; i++) {
if (datain[i].Name == course) {
selectedCourseId = datain[i].Id;
selectedCourseName = datain[i].Name;
} else {
$('#EditCourseSelect').append($('<option></option>').attr("value", datain[i].Id).text(datain[i].Name));
}
}
$('#EditCourseSelect').prepend("<option value=" + selectedCourseId + " selected='selected'>" + selectedCourseName + "</option>");
答案 2 :(得分:0)
您可以在为下拉列表创建选项时避免添加重复记录。最好不要添加两次而不是添加两次并删除一次。这是一个有效的fiddle。
var datain = [{'Id': 1, 'Name': 'jQuery'}, {'Id': 2, 'Name': 'PHP'}, {'Id': 3, 'Name': 'JavaScript'}, {'Id': 4, 'Name': 'HTML5'}, {'Id': 5, 'Name': 'CSS3'}];
var course = 'CSS3';
for (i = 0; i < datain.length; i++) {
if (datain[i].Name == course) {
$('#EditCourseSelect').append($('<option></option>').attr("value", datain[i].Id).prop('selected', true).text(datain[i].Name));
} else {
$('#EditCourseSelect').append($('<option></option>').attr("value", datain[i].Id).text(datain[i].Name));
}
}
如果你传递的course
与循环中的Name
匹配,那么只需添加prop('selected', true)
作为额外选项。