使用jQuery从下拉列表中删除除第一个值之外的所有值

Hri*_*kan 6 html c# asp.net asp.net-mvc jquery

             if (questions[0]) {
                 $("select[id$=ddlPollQuestions] > option").remove();
                 $('#ddlPollQuestions').append('<option value="">Choose a question to compare to</option>');
                 $.each(questions, function(i, question) {
                     $('#ddlPollQuestions').append('<option value="' + question.QUESTIONID + '">' + question.TEXT + '</option>');
                 });
             } else {
                 $("select[id$=ddlPollQuestions] > option").remove();
                 $('#ddlPollQuestions').append('<option value="' + 0 + '">' + 'There are no questions of this type' + '</option>');
             }
Run Code Online (Sandbox Code Playgroud)

它的作用是删除所有以前的值,但是我想要第一个选项,即"选择一个问题..."保留,然后显示"没有问题..."作为我的第二个选项.我的代码在这里没有显示"选择一个问题.."作为第一个选项.谢谢你看看!

gsk*_*gsk 27

更简单的方法:

$('#ddlPollQuestions').children('option:not(:first)').remove();
Run Code Online (Sandbox Code Playgroud)


Cha*_*ndu 9

使用:gt选择器.

试试这个(注意我已经添加了一个字符串变量,以便在每个循环之后附加选项以获得更好的性能):

if (questions[0]) {
         $("select[id$=ddlPollQuestions] > option:gt(0)").remove();
         $('#ddlPollQuestions').append('<option value="">Choose a question to compare to</option>');
         var options = "";
         $.each(questions, function(i, question) {
            options += '<option value="' + question.QUESTIONID + '">' + question.TEXT + '</option>';
         });
         $('#ddlPollQuestions').append(options);
 } else {
         $("select[id$=ddlPollQuestions] > option:gt(0)").remove();
         $('#ddlPollQuestions').append('<option value="' + 0 + '">' + 'There are no questions of this type' + '</option>');
 }
Run Code Online (Sandbox Code Playgroud)