jQuery | 如何从select html元素中获取所选项目

Mer*_*kos 2 html javascript jquery dom

我在页面中设置了一个选择控件,如下所示:

<select multiple="multiple" name="name[]" id="ListId">
    <optgroup label="Group 1">
        <optgroup label="Group 1.1">
            <option selected="selected" value="1">One</option>
            <option value="2">Two</option>
            <option selected="selected" value="3">Three</option>
        </optgroup>
        <optgroup label="Group 1.2">
            <option value="1">One</option>
            <option value="2">Two</option>
            <option selected="selected" value="3">Three</option>
        </optgroup>
    </optgroup>
    <optgroup label="Group 2">
        <optgroup label="Group 2.1">
            <option value="1">One</option>
            <option selected="selected" value="2">Two</option>
            <optionvalue="3">Three</option>
        </optgroup>
    </optgroup>
</select>
Run Code Online (Sandbox Code Playgroud)

通过在我加载页面时使用jQuery,我尝试通过以下代码获取所选项:

if($('#ListId').length > 0)
{
    var selected = [];

    $('#ListId option[selected="selected"]').each(
        function(i)
        {
            var val = $(this).val();
            var txt = $(this).text();

            selected[val] =   txt;
        }
    );
}
Run Code Online (Sandbox Code Playgroud)

然后我修改上面的代码以获取所选项目,如果用户进行了如下新选择:

if($('#ListId').length > 0)
{
    var selected = [];

    $('#ListId option[selected="selected"]').each(
        function(i)
        {
            var val = $(this).val();
            var txt = $(this).text();

            selected[val] =   txt;
        }
    );

    $('#ListId').change(
        function()
        {
            selected = [];

            $('#ListId option[selected="selected"]').each(
                function(i)
                {
                    var val = $(this).val();
                    var txt = $(this).text();

                    selected[val] =   txt;
                }
            );
        }
    );
}
Run Code Online (Sandbox Code Playgroud)

但问题是仍然继续阅读预览"选定"项目.

您还可以访问这里的小提琴进行实时测试:http://jsfiddle.net/Qem7n/

有关如何解决这个问题的任何想法?

Tho*_*eux 7

更改

$('#ListId option[selected="selected"]')
Run Code Online (Sandbox Code Playgroud)

$('#ListId option:selected')
Run Code Online (Sandbox Code Playgroud)

因为:[selected="selected"]不是实时选择器.

示例:http://jsfiddle.net/9YrY8/