0

我有一个带有 jQ​​uery.pep(拖放 jQuery 插件)的 JavaScript 文件。我正在使用以下代码启动插件:

Drag.pep();

现在,我不知道如何禁用/停止它。这是文件中的代码部分:jquery.pep.js. 我想它可能会帮助你回答:

$[pluginName] = {
  stopAll: function () {
    disable = true;
    return this;
  },
  startAll: function () {
    disable = false;
    return this;
  }
};

变量“pluginName”是“pep”。这是完整的 jQuery pep 代码(github):

请帮忙。

谢谢!

4

1 回答 1

3

那可能应该这样做:

$.pep.stopAll(); // stops all peps

编辑:

在代码中有一个可以在实例对象上调用的函数:

Pep.prototype.forceStop = function(){
  $(this.el).trigger( this._endTrigger );
};

该实例在此处构建并保存到数据属性中:

// A really lightweight plugin wrapper around the constructor,
// preventing against multiple instantiations
$.fn[pluginName] = function ( options ) {
    return this.each(function () {
        if (!$.data(this, 'plugin_' + pluginName)) {
            $.data(this, 'plugin_' + pluginName, new Pep( this, options ));
        }
    });
};


$('your-selector').data('plugin_pep').forceStop();

我试图这样做,它调用了 forceStop 方法,但最终并没有这样做。我研究并认为它的作用是停止当前正在进行的动画。

您现在可以做的是覆盖可以在需要时使用选项提供的拖动方法,并在触发动画时立即强制停止。

我不太喜欢,但是当我现在看到代码时,我看不到任何其他方式的机会(此处缺少文档;-()

这应该工作:

var myPep = $('your-selector').data('plugin_pep');
myPep.options.drag = function(ev, obj) {
  obj.forceStop();
};

edit2:如果你想让它再次可拖动,只需用一个空函数再次覆盖该函数:

myPep.options.drag = function() {};
于 2012-11-29T16:21:42.143 回答