jQuery转义选择器无法识别的表达式:[data-route = search \\ / child]

ses*_*eva 3 javascript jquery flatiron.js

我似乎找不到解决此问题的方法。

在SPA应用中,我有不同的路线。#/ search#/ other#/ search / child。我解析主题标签并显示/隐藏一个包含属性data-route的元素。

当路径由一部分#/搜索组成时,一切正常。jQuery正在执行$('[data-route = search]')。

当我添加第二部分#/ search / child时,我将选择器转义为“ search \ / child”,但是Jquery无法运行选择器,并显示以下错误msg:

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
Run Code Online (Sandbox Code Playgroud)

如果我打开控制台并执行相同的选择器,它就可以正常工作。

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);
}
Run Code Online (Sandbox Code Playgroud)

amp*_*ine 5

尝试使用引号。

var selector = "[data-route=\"" + route + "\"]";
Run Code Online (Sandbox Code Playgroud)

您甚至不需要逃脱那个/