jQuery .map() Issue



我基本上没有使用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;
  }
}

最新更新