多选下拉列表及列表项的过滤抉择
多选下拉列表及列表项的过滤选择
有如下的多选下拉列表及列表项,如
在页面中选中了“2号”和“4号”这两项,现在要求打印已经被选中的值
我的代码是这样的,如下:
请问选择过滤条件中的#multiple和:selected这种父子关系之间为什么有一个空格呢?
本人新手,谢谢!
------解决方案--------------------
如果不用空格,那只有几种情况,
1. 不要空格那么:
$("#multiple:selected")
那么jq是不认识这个选择器的,匹配不到东西。。
2. 用逗号,
$("#multiple, :selected")
这是一种多选的情况,是并列关系,表示id为#multiple,下拉框 :selected 选中的情况都匹配。
空格代表的是一种从属关系,其完整的应该是:
$("#multiple option") // 表示匹配只有#multiple下面的option,如果前面没有id,表示匹配所有的option。
$("#multiple option:selected") // 表示匹配只有#multiple下面选中的option,如果前面没有id,表示匹配所有选中的option。
jquery对象本身是一个类数组,取他的值直接可以这样,没有特别的判断处理,可以省略each。
------解决方案--------------------
selected 属性是隶属于 option 的,所以写作 option:selected
而 #multiple :selected 只不过是省略了 option
完整的应写作 #multiple option:selected
有如下的多选下拉列表及列表项,如
<select id="multiple" multiple="multiple" style="height:120px;">
<option selected="selected" value="sel01">1号</option>
<option value="sel02">2号</option>
<option value="sel03">3号</option>
<option value="sel04">4号</option>
<option selected="selected" value="sel05">5号</option>
</select>
在页面中选中了“2号”和“4号”这两项,现在要求打印已经被选中的值
我的代码是这样的,如下:
$("#multiple :selected).each(function(){
alert(this.value);
});
请问选择过滤条件中的#multiple和:selected这种父子关系之间为什么有一个空格呢?
本人新手,谢谢!
------解决方案--------------------
如果不用空格,那只有几种情况,
1. 不要空格那么:
$("#multiple:selected")
那么jq是不认识这个选择器的,匹配不到东西。。
2. 用逗号,
$("#multiple, :selected")
这是一种多选的情况,是并列关系,表示id为#multiple,下拉框 :selected 选中的情况都匹配。
空格代表的是一种从属关系,其完整的应该是:
$("#multiple option") // 表示匹配只有#multiple下面的option,如果前面没有id,表示匹配所有的option。
$("#multiple option:selected") // 表示匹配只有#multiple下面选中的option,如果前面没有id,表示匹配所有选中的option。
jquery对象本身是一个类数组,取他的值直接可以这样,没有特别的判断处理,可以省略each。
alert($("#multiple option:selected").val());
------解决方案--------------------
$("#multiple :selected").each(function(){观察这两个的执行结果就可以知道了
alert(this.value);
});
$("option:selected").each(function(){
alert(this.value);
});
selected 属性是隶属于 option 的,所以写作 option:selected
而 #multiple :selected 只不过是省略了 option
完整的应写作 #multiple option:selected