2

我在我的网站上使用 FancyBox 1.3.1 jQuery 插件。从 jQuery 1.4.1 切换到 1.9.1 后,我开始收到以下错误消息:

未捕获的错误:语法错误,无法识别的表达式:a[rel=lightbox[ArticleImages]]

我尝试将选择器更改为jQuery 文档中描述的内容:

$('a[rel="lightbox[ArticleGallery]"]')

但这也不起作用,因此将不胜感激。

4

3 回答 3

2

您必须对选择器中的方括号使用转义字符反斜杠\

改变

$('a[rel="lightbox[ArticleGallery]"]')

$('a[rel="lightbox\\[ArticleGallery\\]"]')
于 2013-03-27T09:12:22.980 回答
1

转义[运算符 .. 因为 jquery 将其视为属性选择器

$('a[rel="lightbox\\[ArticleGallery\\]"]')
于 2013-03-27T09:12:42.310 回答
0

答案由几个部分组成,所以我在这里总结一下答案:

  1. 在 jQuery 1.9.1 中,您必须转义选择器中的方括号。请参阅 Adil 的回答。

  2. 当从旧版本的 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() })

现在它起作用了。谢谢帮忙。

于 2013-03-27T10:45:00.190 回答