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

当我添加以下脚本并运行。得到,

Uncaught Error: Syntax error,unrecognized expression: ul li
a[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")
    }
});

解决方法

使用基于属性的选择器时,需要用特殊字符括起来。
if ($('ul li a[href="' + id + '"]').length) {

您的版本的选择器会导致

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

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

我的版本中的“”转义字符

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

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...