4

ご存知かもしれませんが、HTML5ではID名に使用できる文字を増やすことができます。無効な文字としてスペースが含まれるようになったHTML5仕様を参照してください。これをJQueryで使用しようとすると、JQueryは特定の有効な文字「/」の後のID内のすべての文字を無視します。

<section>
    <div id='foo/bar'>
        YAAY
    </div>
    <div id='foo'>
        BOO
    </div>
</section> ​

'foo/bar'要素のログ

console.log(​$(document).find('div#foo/bar')​​​​)​

返される誤った要素を示します:

[
<div id=​"foo">​
    BOO
​&lt;/div>​
]

これは、現在の安定したJQuery(1.7.1)と現在のJQueryエッジの両方を使用しています。

これはJQueryのバグですか、それとも何か間違ったことをしていますか?

4

1 に答える 1

4

スラッシュをエスケープします(デモ:http://jsfiddle.net/m9NT8/):

console.log(​$(document).find('div#foo\\/bar')​​​​)​

PS。$(document).find('selector')と同等$(selector)です。

この動作は、Sizzleのソースコードの374行目の正規表現で定義されています。

ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
于 2012-03-17T14:24:56.213 に答える