我基本上没有使用jQuery的经验,只是足够应付大多数时间。然而,我最近一直在改变一些模板,并遇到了一块不是我写的jQuery,但抛出了一个错误(Uncaught Error: Syntax error, unrecognized expression: /
)。我不知道该从哪里开始。到目前为止,我所知道的是,我相当确定是这段代码引起的,它在scrollItems
行阻塞:
// Cache selectors
var lastId,
topMenu = $(".nav"),
topMenuHeight = topMenu.outerHeight() + 50,
// All list items
menuItems = topMenu.find("a"),
// Anchors corresponding to menu items
scrollItems = menuItems.map(function() {
var item = $($(this).attr("href"));
if (item.length) {
return item;
}
///////////////FANCYBOX
$(".fancybox-media").fancybox({
arrows: true,
padding: 0,
closeBtn: true,
openEffect: 'fade',
closeEffect: 'fade',
prevEffect: 'fade',
nextEffect: 'fade',
helpers: {
media: {},
overlay: {
locked: false
},
buttons: false,
title: {
type: 'inside'
}
},
beforeLoad: function() {
var el, id = $(this.element).data('title-id');
if (id) {
el = $('#' + id);
if (el.length) {
this.title = el.html();
}
}
}
});
});
我已经单独测试了fancybox代码,它可以工作,但我认为我应该把它留在里面,以便彻底。还有一些注释掉的代码,我去掉了。任何帮助将非常感激!
很可能是这一行导致了错误:
var item = $($(this).attr("href"));
你似乎有一个链接与href="/"
(链接到开始页),所以代码将做相同的:
var item = $("/");
jQuery会尝试将URL解析为一个选择器,你会得到确切的错误信息。
检查href
属性包含书签而不是URL,然后再尝试将其用作选择器:
var href = $(this).attr("href");
if (href.substr(0, 1) == "#") {
var item = $(href);
if (item.length) {
return item;
}
}