从列表javascript中删除选择值

时间:2015-11-10 10:38:05

标签: javascript jquery

我目前有一个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>");

非常感谢任何帮助

3 个答案:

答案 0 :(得分:1)

只需使用CSS selector

即可
$('#EditCourseSelect option:selected').remove()

jQuery .find()

$('#EditCourseSelect').find("option:selected").remove()

.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)作为额外选项。