attributeContains选择器中无法识别的表达式

时间:2013-03-27 09:10:56

标签: javascript jquery jquery-selectors fancybox

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

  

未捕获错误:语法错误,无法识别的表达式:   一个[相对=收藏夹[ArticleImages]]

我尝试将选择器更改为jQuery documentation

中描述的内容
$('a[rel="lightbox[ArticleGallery]"]')

但这也不起作用,所以任何帮助都会受到赞赏。

3 个答案:

答案 0 :(得分:2)

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

更改

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

答案由几个部分组成,所以我只想总结一下答案:

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

  2. 从较旧版本的jQuery迁移到1.9.1时,您可以使用migration.js文件来确保任何旧的第三方插件仍然有效。请参阅FrançoisWahl的评论。

  3. 但就我而言,这些建议都没有奏效。我仍然收到相同的错误消息。

    所以我做的是迁移到fancyBox2,但后来发现了另一个问题:

    我的网站使用的是Twitter Bootstrap 2.3.0,它与fancyBox2不兼容。幸运的是,我在this forum thread找到了答案。

    我不得不在bootstrap.js文件中改变这段代码:

    .on('.dropdown-menu', function (e) { e.stopPropagation() })
    

    对此:

    .on('click.dropdown-menu', function (e) { e.stopPropagation() })
    

    现在它有效。谢谢你帮忙。