像$(.someClass)这样的JQuery类选择器区分大小写?

Jus*_*ant 18 html javascript jquery standards quirks-mode

鉴于此HTML:

<div class="OpenIDSelector">some text</div>
Run Code Online (Sandbox Code Playgroud)

为什么这个JQuery选择器在某些浏览器和某些页面上匹配它,而在其他页面上却不匹配?

$('.OpenIdSelector')
Run Code Online (Sandbox Code Playgroud)

注意:我遇到了这个问题并且自己解决了,但是它很烦人,我在StackOverflow上找不到它,所以我把它作为Q&A对发布,所以别人不会像我那样浪费一个小时.

Jus*_*ant 31

事实证明,如果浏览器支持JQuery的类选择器,则使用新的javascript方法getElementsByClassName.此方法在quirks-mode页面上不区分大小写,在非quirksmode(也称为标准兼容)页面上区分大小写.当然,通常很明显案例是不同的,但是当文本卡在长而复杂的选择器中间时,很难看到.显然,标准和怪癖之间存在许多区分大小写的差异需要注意.

故事的道德:匹配HTML中的所有内容(元素名称,CSS类等),因为您永远不知道何时对浏览器或标准或库的更改可能会使您对不区分大小写的假设失效.