我在我的网站上使用 FancyBox 1.3.1 jQuery 插件。从 jQuery 1.4.1 切换到 1.9.1 后,我开始收到以下错误消息:
未捕获的错误:语法错误,无法识别的表达式:a[rel=lightbox[ArticleImages]]
我尝试将选择器更改为jQuery 文档中描述的内容:
$('a[rel="lightbox[ArticleGallery]"]')
但这也不起作用,因此将不胜感激。
我在我的网站上使用 FancyBox 1.3.1 jQuery 插件。从 jQuery 1.4.1 切换到 1.9.1 后,我开始收到以下错误消息:
未捕获的错误:语法错误,无法识别的表达式:a[rel=lightbox[ArticleImages]]
我尝试将选择器更改为jQuery 文档中描述的内容:
$('a[rel="lightbox[ArticleGallery]"]')
但这也不起作用,因此将不胜感激。
您必须对选择器中的方括号使用转义字符反斜杠\
。
改变
$('a[rel="lightbox[ArticleGallery]"]')
至
$('a[rel="lightbox\\[ArticleGallery\\]"]')
转义[
运算符 .. 因为 jquery 将其视为属性选择器
$('a[rel="lightbox\\[ArticleGallery\\]"]')
答案由几个部分组成,所以我在这里总结一下答案:
在 jQuery 1.9.1 中,您必须转义选择器中的方括号。请参阅 Adil 的回答。
当从旧版本的 jQuery 迁移到 1.9.1 时,您可以使用 migration.js 文件来确保任何旧的 3rd 方插件仍然可以工作。请参阅 François Wahl 的评论。
但就我而言,这些建议都没有奏效。我仍然收到相同的错误消息。
所以我所做的就是迁移到fancyBox2,但后来偶然发现了另一个问题:
我的网站使用的是 Twitter Bootstrap 2.3.0,它不适用于 fancyBox2。幸运的是,我在这个论坛帖子中找到了答案。
我不得不在 bootstrap.js 文件中更改代码的和平:
.on('.dropdown-menu', function (e) { e.stopPropagation() })
对此:
.on('click.dropdown-menu', function (e) { e.stopPropagation() })
现在它起作用了。谢谢帮忙。