CSS 选择器有效,jquery 选择器无效(仅 IE 问题)

Posted

技术标签:

【中文标题】CSS 选择器有效,jquery 选择器无效(仅 IE 问题)【英文标题】:CSS selector works, jquery selector doesn't (IE only issue) 【发布时间】:2012-01-20 08:08:05 【问题描述】:

请注意,以下是仅 IE 的问题(像往常一样...)

我有以下 html 代码:

<input id="foo" type="checkbox" checked="checked" />
<label for="foo">
  <span>some foo text</span>
</label>

我有一个完美运行的 CSS 规则:

#foo + label > span  
    display: block;
    line-height: 1em;
    padding: 0.4em 1em;
    cursor: pointer;
    text-align:center;
    text-decoration:none;

然后我有一个 CSS 选择器,它与不返回任何内容的相同 CSS 选择器匹配:

var textVal = $("#foo + label > span").text();

但由于某种原因,如果我使用以下行,它将返回正确的值:

var textVal = $("#foo + label").html() or .text()

我真的很想选择标签的跨度,因为我想更改它的文本并且不想每次都附加一个新的跨度。

谢谢,

编辑:

有趣的是,如果我执行以下操作...

var label = $("#foo + label");
var textVal = $(">span",label).text();

【问题讨论】:

【参考方案1】:

尝试以下方法:

var textVal = $("label[for='foo'] span").text();

【讨论】:

是的,我的编辑工作。但我仍然不明白为什么我的第一个选择器不起作用。因为选择器 $("#foo + label") 的第一部分工作得很好【参考方案2】:

这对我来说在 IE8 中工作。可能是因为您没有关闭 checked="checked 上的 "?

示例:http://jsfiddle.net/mEAYr/

【讨论】:

这只是 *** 出于某种原因没有显示它。哦,顺便说一句,我使用的是 IE7

以上是关于CSS 选择器有效,jquery 选择器无效(仅 IE 问题)的主要内容,如果未能解决你的问题,请参考以下文章

哪些字符在 CSS 类名/选择器中有效?

哪些字符在 CSS 类名/选择器中有效?

正则表达式将缺失的选择器添加到无效的 CSS

Jquery学习笔记 - 选择器

非法 CSS 选择器

选择器性能 - 'E#id' vs '#id' - 在 CSS 和 jQuery 中