jQuery ListBox单个或多个选定的项目

时间:2012-07-19 13:39:37

标签: jquery

我有一个ASP.NET ListBox,在更改时我需要在(单个或多个)警报中显示(单个或多个)所选文本。警报的数量应该等于所选项目的数量。我尝试了以下代码,在这里我得到一个额外的警报,显示ListBox中的第一个项目。我哪里出错了?

<asp:ListBox ID="ListBox1" runat="server" Width="100px"
    SelectionMode="Multiple">
    <asp:ListItem Selected="True" Value="1">White</asp:ListItem>
    <asp:ListItem Selected="False" Value="2"> Silver </asp:ListItem>
    <asp:ListItem Value="3"> Dark Gray </asp:ListItem>
    <asp:ListItem Value="4"> Khaki </asp:ListItem>
    <asp:ListItem Value="5"> Dark Khaki </asp:ListItem>
</asp:ListBox>

$(document).ready(function () {
    $("#ListBox1 ").change(function () {
        $("option").each(function () { 
            if (this.selected) {
                alert(this.text);
            }
        });
    });
});

请帮忙。

感谢。

1 个答案:

答案 0 :(得分:1)

我认为发生的事情是你的asp代码在HTML中呈现列表项:

...
<option value="1" selected="true">
<option value="2" selected="false">
...

由于属性“selected”在两种情况下都存在,如果属性设置为true或false,则检查this.selected将返回true,因为“selected”存在于任何一种方式。

实现相同目标的更简单方法是替换它:

$("#ListBox1 ").change(function () {
    $("option").each(function () { 
        if (this.selected) {
            alert(this.text);
        }
    });
});

用这个:

$('#ListBox1').find('option:selected').map(function () {
  alert.log($(this).text());
});