代码之家  ›  专栏  ›  技术社区  ›  Matt Anxo P

编写jquery插件:如何设置回调以在返回false时终止插件执行

  •  0
  • Matt Anxo P  · 技术社区  · 14 年前

    我正在编写一个jquery插件,它有几个回调,现在我需要允许其中一个回调运行。所讨论的回调是“beforeListItemSelect”,因此,如果回调函数返回false,自然我希望回调后的插件代码不运行。下面是我的插件代码的一部分:

    $listItems.live('click', function() {
        $.isFunction(options.beforeListItemSelect) && options.beforeListItemSelect.call(this);
    
        // perform select action (apply css, etc)
    
        $.isFunction(options.afterListItemSelect) && options.afterListItemSelect.call(this);
    });
    

    因此,如果我正在调用插件(MyPlugin),并且我已经像这样定义了beforeListItemSelect回调:

    $('#someDiv').myPlugin({
        beforeListItemSelect: function() {
            return false;
        }
    });
    

    我希望插件在beforeListItemSelect回调后终止。如果回调返回了false,是否有人知道如何将插件设置为不继续?

    非常感谢。

    1 回复  |  直到 13 年前
        1
  •  1
  •   Tomalak    14 年前

    更少的句法糖分,事情又开始变得容易了:

    var result;
    
    if ($.isFunction(options.beforeListItemSelect))
      result = options.beforeListItemSelect.call(this);
    }
    if (result === false) return;
    

    当然,你仍然可以使用你喜欢的所有句法术语:

    $.isFunction(options.beforeListItemSelect) && result = options.beforeListItemSelect.call(this);
    

    但这并不完全有助于代码的易读性或增强任何东西。只是…可能的。然而,并不是所有可能的事情都应该做。