【问题标题】:Jquery expression error: expected an assignment or function call and instead saw an expressionJquery 表达式错误:期望一个赋值或函数调用,而是看到一个表达式
【发布时间】:2015-11-03 11:47:48
【问题描述】:

我有一个简单的代码:

 _create: function () {
            var self = this;
            $("#Grid").on("click", ".Row", function () {
                $(self).hasClass('Expanded') && $('html, body').animate({
                    scrollTop: $(self).offset().top
                }, 500);
            });
        },

在 Jslint 上出现以下错误:

期待一个赋值或函数调用,但看到一个表达式 },500)

我认为它可能会因为&& 调用而引发此错误,但我更愿意保持这种方式。

解决这个问题的最佳方法是什么?

【问题讨论】:

  • 为什么不能这样写? if($(self).hasClass('Expanded')){ //that animation code here }
  • hasClass 使用的返回布尔值的函数不与函数调用一起使用
  • @Rajaprabhu Aravindasamy 因为代码与一堆其他 js 捆绑在一起并被编译为 min.js 文件,这使得代码具有这种形式
  • && 仅在 if/else if 条件下才有意义。例如if(cond1 && cond2){...}

标签: jquery jslint


【解决方案1】:

解决方案很简单,我错过了return 声明。

 _create: function () {
            var self = this;
            $("#Grid").on("click", ".Row", function () {
                return $(self).hasClass('Expanded') && $('html, body').animate({
                    scrollTop: $(self).offset().top
                }, 500);
            });
        },

感谢大家的帮助。

【讨论】:

    【解决方案2】:

    尝试以下方法:

    _create: function () {
                var self = this;
                $("#Grid").on("click", ".Row", function () {
                    if ($(self).hasClass('Expanded')){
                        $('html, body').animate({
                            scrollTop: $(self).offset().top
                        }, 500);
                    } 
                });
            },
    

    【讨论】:

    • 是的,这在某种程度上是正确的,但我在问题中表示我想保留 &&
    • 动画函数不会返回布尔值。所以您不能将&&hasClassanimate 一起使用。此外,您也没有将&& 的结果分配给稍后将在任何地方使用的任何变量
    猜你喜欢
    • 2017-09-09
    • 2020-03-21
    • 2011-05-09
    • 1970-01-01
    • 2020-11-16
    • 2020-12-28
    • 2019-04-22
    • 2020-02-12
    相关资源
    最近更新 更多