JQuery 1.7.1, похоже, не может обрабатывать идентификаторы элементов HTML5 - PullRequest
4 голосов
/ 17 марта 2012

Как вы, возможно, знаете, HTML5 позволяет использовать больше символов в именах идентификаторов - см. спецификацию HTML5 , которая теперь содержит пробел в качестве единственного недопустимого символа. Попытка использовать это с JQuery показывает, что JQuery игнорирует все символы в идентификаторе после определенного допустимого символа, '/'.

<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
​</div>​
]

Используется как текущий стабильный JQuery (1.7.1), так и текущий фронт JQuery.

Это ошибка JQuery или я что-то не так делаю?

1 Ответ

4 голосов
/ 17 марта 2012

Избежать косой черты (демо: http://jsfiddle.net/m9NT8/):

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

PS. $(document).find('selector') эквивалентно $(selector).

Это поведение определяется в RegEx на Исходный код Sizzle, строка 374 :

ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
...