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

时间:2011-07-15 01:51:40

标签: c# jquery asp.net html asp.net-mvc

             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>');
             }

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

4 个答案:

答案 0 :(得分:27)

更简单的方法:

$('#ddlPollQuestions').children('option:not(:first)').remove();

答案 1 :(得分: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>');
 }

答案 2 :(得分:0)

由于您要移除代码中的所有选项,因此您可能只想在Choose a question...语句中再次附加else

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="">Choose a question to compare to</option>');
    $('#ddlPollQuestions').append('<option value="' + 0 + '">' + 'There are no questions of this type' + '</option>');
}

答案 3 :(得分:0)

示例:http://jsfiddle.net/xeYwv/2/

var $PollQuestions = $('#ddlPollQuestions');

if (questions[0]) {
    $PollQuestions.children().remove();
    $PollQuestions.append('<option value="0">Choose a question to compare to</option>');
    $.each(questions, function(i, question) {
        $PollQuestions.append('<option value="' + question.QUESTIONID + '">' + question.TEXT + '</option>');
    });
} else {
    $PollQuestions.children().remove();
    $PollQuestions.append('<option value="' + 0 + '">' + 'There are no questions of this type' + '</option>');
}

你所拥有的已经非常接近了。