语法错误,href的无法识别的表达式

时间:2015-07-03 02:16:01

标签: jquery

当我添加以下脚本并运行时。我得到了这个:

  

未捕获错误:语法错误,无法识别的表达式:ul li   一个[HREF =#!ID1]

我不确定导致此问题的双引号。

HTML

<ul>
 <li class="slist selected" id="id1"><a href="#!id10">Test1/a></li>
 <li class="slist" id="id2"><a href="#!id20">Test2</a></li>
 <li class="slist" id="id3"><a href="#!id30">Test3/a></li>
</ul>

JS

$(document).ready(function () {
    var id = "#!" + window.location.href.split("!")[1];
    if ($("ul li a[href=" + id + "]").length) {
        console.log("present");    
    } else {    
        console.log("absent")
    }
});

4 个答案:

答案 0 :(得分:37)

使用基于属性的选择器时,需要在引号中包含特殊字符。

if ($('ul li a[href="' + id + '"]').length) {

您的选择器版本会产生

if ($("ul li a[href=#!...]").length) {

#!会抛出无法识别的表达式。

""转义字符

的我的版本
if ($('ul li a[href="#!..."]').length) {

答案 1 :(得分:12)

我尝试了

提供的解决方案
https://github.com/jquery/jquery/issues/2885

对我有用。我搜索[href=#] in js and replace with [href*=\\#]

a[href*=\\#]:not([href=\\#])

答案 2 :(得分:4)

您可以在functions.php中添加以下代码

&#13;
&#13;
function modify_jquery() {
if (!is_admin()) {
	wp_deregister_script('jquery');
	wp_register_script('jquery', 'https://code.jquery.com/jquery-1.11.3.min.js');
	wp_enqueue_script('jquery');
}
}
add_action('init', 'modify_jquery');
&#13;
&#13;
&#13;

答案 3 :(得分:0)

我收到此错误,是因为我在代码中的某些位置添加了这些行代码;

$("a[href^='#']").click(function(e {
    e.preventDefault();
    var position = $($(this).attr("href")).offset().top; // if you remove this line, then error won't come
});