jquery选择器select option

$("selectoption:[selected='selected']")这种组合的过滤器为什么不行呢,如果是这种结构选择到其他标签就可以:<div><input/>... $("select option:[selected='selected']")这种组合的过滤器为什么不行呢,如果是这种结构选择到其他标签就可以:<div><input/></div>
写错了,没有那个冒号$("select option[selected='selected']")
展开
 我来答
一年孤独58aa
2018-04-16 · TA获得超过1404个赞
知道小有建树答主
回答量:592
采纳率:92%
帮助的人:443万
展开全部

应该使用

$('option:selected');

':selected'和$('[name="value"]')有什么区别呢:

  1. ':selected'是jQuery扩展的选择器,并不属于CSS选择器规范,  仅适用于动态的获取选中的option. 请注意,你选中Select中的option时, 虽然select的状态发生了变化, 但html标记本身并不会变化. 

  2. 而$('[name="value"]')的语法是jQuery的属性选择器, 遵循CSS选择器规范.  属性选择器是严格和html标记相匹配的, 举个例子: $('input[type="text"]')会命中<input type="text"> 但是不会命中<input >, 虽然后者默认是text. 

<select>
    <option>1<option>
    <option selected>2<option>
    <option>3<option>
</select>

$('option[selected]').text();
//页面加载后得到2
//手工选择1或者3后, 依然得到的是2. 选择select并不会修改html标记.

$('option[selected="selected"]').text();
//始终得到"", 虽然选项2的selected属性的确是selected, 但是请注意属性选择器是严格和html标记对应的.

$('option:selected').text();
//页面加载后得到2
//手工选择1得到1,选择3得到3. 正式期望的结果.这就是为什么jQuery会扩展出这个选择器.
追问

为什么这种的就可以正常执行呢?

$("input[value='测试']")

这个遵守了css选择器规范了吗?

遥遥无期Li
2018-04-16 · TA获得超过497个赞
知道小有建树答主
回答量:544
采纳率:56%
帮助的人:242万
展开全部
$("select option:selected");         // 被选中的option
追问
$("select option[selected='selected']")这样写 和你那样写,的区别在哪里呢?

为什么这样写的时候就只能获取到在html代码中已经加上了selected='selected'的option?如果html代码本身没有加入selected属性,则单击option或者通过JQuery添加selected='selected'属性,通过$()获取不到呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式