2016-12-14 158 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>

相關問題