我试图触发我的onclick事件,直到我在控制台日志中得到以下内容:
错误:语法错误,无法识别的表达式:li [data-path = '00'']
我的代码如下:
$( "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的
然后做它的事。我认为问题在于逃避单引号吗?
答案 0 :(得分: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>");
<强>样本强>
$( "li[data-path='00\\'s']" ).on("click", function()
{
console.log("in 00s");
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<li data-path="00's"
>Click</li>
&#13;
答案 1 :(得分: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>