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/
有关如何解决这个问题的任何想法?
更改
$('#ListId option[selected="selected"]')
Run Code Online (Sandbox Code Playgroud)
至
$('#ListId option:selected')
Run Code Online (Sandbox Code Playgroud)
因为:[selected="selected"]
不是实时选择器.