如何找到jQuery错误的来源?

时间:2019-01-26 00:21:12

标签: javascript jquery jquery-migrate

我有一个页面引用了jQuery 3.3.1,jQuery-Migrate 1.4.1和Bootstrap 3.3.7。当我单击页面上的任意位置时,在控制台中出现以下错误:

jquery-3.3.1.js?v=2018.8.0.1-develop:1541 Uncaught Error: Syntax error, unrecognized expression: #
    at Function.Sizzle.error (jquery-3.3.1.js?v=2018.8.0.1-develop:1541)
    at Sizzle.tokenize (jquery-3.3.1.js?v=2018.8.0.1-develop:2193)
    at Sizzle.select (jquery-3.3.1.js?v=2018.8.0.1-develop:2620)
    at Function.Sizzle (jquery-3.3.1.js?v=2018.8.0.1-develop:845)
    at Function.a.find (jquery-migrate-1.4.1.min.js?v=2018.8.0.1-develop:2)
    at jQuery.fn.init.find (jquery-3.3.1.js?v=2018.8.0.1-develop:2873)
    at jQuery.fn.init.a.fn.find (jquery-migrate-1.4.1.min.js?v=2018.8.0.1-develop:2)
    at a.fn.init.jQuery.fn.init (jquery-3.3.1.js?v=2018.8.0.1-develop:2983)
    at new a.fn.init (jquery-migrate-1.4.1.min.js?v=2018.8.0.1-develop:2)
    at jQuery (jquery-3.3.1.js?v=2018.8.0.1-develop:139)

从错误unrecognized expression: #来看,我很清楚下面的代码,其中变量为空/空/未定义:

$('#' + someBlankVariable).method();

我搜索了'#' +,并在所有找到的实例上放置了断点,但没有一个被空白变量命中。

因此,鉴于整个错误堆栈都在jQuery和jQuery-migrate中,那么我如何确定实际导致错误的原因呢?

1 个答案:

答案 0 :(得分:0)

产生以下属性的原因:

href="#"

替换为属性

href="javascript:void(0)"