2014-10-28 5 views
3

Я не могу найти работу по этой проблеме.Jquery escaping selector unrecognized expression: [data-route = search \/child]

В приложении SPA у меня разные маршруты. #/поиск #/прочее #/поиск/ребенок. Я разбираю хэштег и показываю/скрываю элемент, содержащий атрибут data-route.

Когда путь составлен одной частью #/поиск, все работает нормально. JQuery делает $ ('[data-route = search]').

Когда я добавляю вторую часть #/поиск/ребенок, я убегаю селектор в «поиск \/ребенок», но Jquery не запускается селектор со следующим сообщ об ошибке:

Uncaught Error: Syntax error, unrecognized expression: [data-route=search\\/child] jquery.js:1850Sizzle.error jquery.js:1850tokenize jquery.js:2460select jquery.js:2847Sizzle jquery.js:1289jQuery.fn.extend.find jquery.js:5730jQuery.fn.jQuery.init jquery.js:197jQuery jquery.js:63allroutes MainView.js:21apply director.js:511_every director.js:308Router.invoke director.js:516updateAndInvoke director.js:474Router.dispatch director.js:482handler director.js:203onchange director.js:76 

Если я открываю консоль и выполнить тот же селектор, он работает отлично.

var route = window.location.hash.slice(2); 
route = route.replace('/','\\\\/'); 
var sections = $('[data-route]'); 
var selector = "[data-route=" + route + "]"; 
var section = $(selector); 

if (section.length) { 
    sections.hide(250); 
    section.show(250); 
} 
+0

Попробуйте варианты '[data-route =" search/child "]', '[data-route =" search \/child "]', '[data-route =" search \\/child "]' , – amphetamachine

ответ

4

Пробуйте использовать цитаты.

var selector = "[data-route=\"" + route + "\"]"; 

Вам даже не нужно избегать /.

+0

Это сработало! Благодаря! – sesteva