0

在我正在使用的 jQuery 函数中,我使用 .get 返回一些 XML 数据,然后使用它来填充下拉框。我用来<OPTION>在选择中构建标签的代码如下:

$.get(sURL, function(data) {
    var select = $("#dList");
    $(data).find("Row").each(function() {
    var mgid = $(this).find("MessageGroupID").text();
    var gname = $(this).find("GroupName").text();
    var option = $("<option>" + gname + "</option>");
    option.attr("value", mgid);
    select.append(option);
    });
});

正在解析的 XML 是:

<?xml version="1.0" encoding="UTF-8"?>
<Rowsets DateCreated="2013-05-07T11:33:51" EndDate="2013-05-07T11:33:51" StartDate="2013-05-07T10:33:51" Version="1.1.1">
<Rowset>
<Columns>
<Column Description="MessageGroupID" MaxRange="1" MinRange="0" Name="MessageGroupID" SQLDataType="4" SourceColumn="MessageGroupID"/>
<Column Description="GroupName" MaxRange="1" MinRange="0" Name="GroupName" SQLDataType="12" SourceColumn="GroupName"/>
</Columns>
<Row>
<MessageGroupID>1</MessageGroupID>
<GroupName>First Shift</GroupName>
</Row>
<Row>
<MessageGroupID>4</MessageGroupID>
<GroupName>Alternate First Shift</GroupName>
</Row>
<Row><MessageGroupID>7</MessageGroupID>
<GroupName>Temporary First Shift</GroupName>
</Row>
</Rowset>
</Rowsets>

我调用该函数来加载脚本的 document.ready 部分中的下拉菜单。

返回 3 行时,第一行始终显示在下拉框中。或者,如果我在前面加上一个空行:

var blankline = $("<option value='' selected='selected'></option>");

我得到了空白下拉框,但现在下拉列表中有 4 个项目(一个空白 + 我应该有的 3 个)。我认为设置 selectedindex= -1 会做到这一点,但它没有效果,因为这些项目不是静态的。

你如何让下拉框既有空白/空显示值,又在实际选项列表中仍然有适当数量的项目?

谢谢!

小号

4

1 回答 1

1
$(document).ready(function () {
    $('select').click(function(){
        $(this).children(':eq("0")').hide();
        $(this).unbind('click');
    });
}); // untested Code

编辑:

请试试这个...

$('select').one('mousedown',function(){
    $("option:first",this).remove();
});

我自己对此感到困惑..最后在SO上了这个问题,终于得到了一个漂亮的答案..

于 2013-05-07T16:39:26.053 回答