javascript - 当我在 1.7 上替换 jquery 1.12.4 时出错

标签 javascript jquery

当我用 1.12.4 替换 jquery 版本 1.7 时,出现以下错误:

Uncaught Error: Syntax error, unrecognized expression: a[href*=#]
at Function.fa.error (jquery-1.12.4.min.js:2)

以下是我的代码,我是这个领域的新手,对 javascript 不太了解,有人可以帮我解决这个问题吗? :

$(window).load(function () {
    function filterPath(string) {
        return string.replace(/^\//, '').replace(/(index|default).[a-zA-Z]{3,4}$/, '').replace(/\/$/, '');
    }
    $('a[href*=#]').each(function () {
        if (filterPath(location.pathname) == filterPath(this.pathname) && location.hostname == this.hostname && this.hash.replace(/#/, '')) {
            var $targetId = $(this.hash),
            $targetAnchor = $('[name=' + this.hash.slice(1) + ']');
            var $target = $targetId.length ? $targetId : $targetAnchor.length ? $targetAnchor : false;

            if ($target) {

                $(this).click(function () {

                    //Hack collapse top navigation after clicking
                    topMenu.parent().attr('style', 'height:0px').removeClass('in'); //Close navigation
                    $('.navbar .btn-navbar').addClass('collapsed');

                    var targetOffset = $target.offset().top - 63;
                    $('html, body').animate({
                        scrollTop: targetOffset
                    }, 800);
                    return false;
                });
            }
        }
    });

最佳答案

根据W3C CSS validator您的 CSS 选择器无效:

a[href*=#] {
}

Lexical error at line 1, column 10. Encountered: "]" (93), after : "#" *=] { }

您缺少引号:

a[href*="#"] {
}

它可能停止了 jQuery 迁移,因为较新的版本使用(最快的) native CSS 选择器 (Element.querySelectorAll),它不能像旧的纯 JavaScript 实现那样容忍错误由 jQuery 提供。

所以尝试一下:

$('a[href*="#"]')

您也可能在其他选择器中遇到类似的错误:

$targetAnchor = $('[name=' + this.hash.slice(1) + ']');

...最好是:

$targetAnchor = $('[name="' + this.hash.slice(1) + '"]');

...并且可能还需要转义 this.hash.slice(1),具体取决于它应该包含的内容。

同样,这个:

[href='#'portfolio]

...应该是:

[href='#portfolio']

您需要找到生成它的代码段并修复语法。

绝对所有指向 CSS 选择器的语法错误、无法识别的表达式错误都有相同的原因(无效的选择器)和修复(正确的选择器语法)。

关于javascript - 当我在 1.7 上替换 jquery 1.12.4 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44824963/

相关文章:

Javascript 菜单样式——循环内循环

javascript - JQuery 搜索框自动建议 - 如何使用箭头键从建议中进行选择,同时仍保持对输入字段的关注

javascript - 使用 javascript(或 jQuery)选择和操作 CSS 伪元素,例如::before 和::after

javascript - 如何在js中创建对象链

javascript - 使用 javascript 动态添加和删除 div

javascript - 单击时不触发列表组的单击事件

jQuery 完整日历默认 View 设置

javascript - 返回在 POST 上创建的对象 - express.js

javascript - 从 Fetch API 更改请求对象的 URL

java - 如何使用 Selenium 在 Indeed 上单击“立即申请”按钮?