2016-12-14 138 views
0

我试图触发我的onclick事件,直到我在控制台日志如下:错误:语法错误,无法识别的表达

Error: Syntax error, unrecognized expression: li[data-path='00's']

我的代码如下:

$("li[data-path='00\'s']").on("click", function() 
{ 
    console.log("in 00s"); 
    $('#replacewithimg').replaceWith('<img id="replacewithimg" src="../assets/img/playlist-icons/00s.png" style="padding-left: 5px;padding-right: 10px;padding-bottom: 5px;">'); 
    $('#replacewithtext').replaceWith('<b id="replacewithtext" style="font-size:30px;">00\'s Playlist</b>'); 
    $('#replacewithtext2').replaceWith('<p id="replacewithtext2" style="font-size:18px; padding-top:10px;">Includes Amy Whinehouse, Westlife, The Killers...</p>'); 
}); 

如果点击所述li标签其中包含与

00's

然后做一个数据路径匹配的元件在它的事。我认为问题在于逃避单引号?

回答

3

使用

$("li[data-path='00\\'s']") 

,而不是

$("li[data-path='00\'s']") 

第一个反斜杠将难逃在函数调用中的第二反斜线发送的功能,现在剩下的反斜杠将CSS为CSS选择器

使用

PS:使用此代替以避免转义'

$('#replacewithtext').replaceWith("<b id='replacewithtext' style='font-size:30px;'>00\'s Playlist</b>"); 

DEMO

$("li[data-path='00\\'s']").on("click", function() 
 
{ 
 
    console.log("in 00s"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<li data-path="00's" 
 
    >Click</li>

+0

谢谢!不幸的是,它修复了控制台错误,但是当我点击元素时。不会输入函数? – irishwill200

+1

@ irishwill200我已经添加了一个演示,告诉您它确实正在进入该功能。现在问题一定在其他地方。找到错误,然后随意再次询问是否卡住:) – bugwheels94

+0

@ irishwill200是在页面渲染/'.on'代码已被调用(例如通过ajax调用)后由代码生成的'li'? –

0

这里的一些变化,也许最好的办法是使用一个变量,如果你不喜欢使用\

// with outer ', inner ", single \ 
 
console.log($('div[data-path="00\'s"]').length) 
 
// with outer ", inner ', double \\ 
 
console.log($("div[data-path='00\\'s']").length) 
 

 
// No \, using a variable, with outer ' and inner " 
 
// This doesn't work inline as the js parser sees the ' 
 
// rather than it being a jquery limitation 
 
var path = "00's" 
 
console.log($('div[data-path="' + path + '"]').length) 
 

 
// without inner " or ' 
 

 
// With outer " use double \\ 
 
console.log($("div[data-path=00\\'s]").length) 
 
// With outer ' use triple \\\ 
 
console.log($('div[data-path=00\\\'s]').length) 
 

 
// doesn't work 
 
// console.log($("div[data-path=00's]").length) 
 
// console.log($("div[data-path=00\'s]").length)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div data-path="00's"> 
 
</div>

相关问题