0

在我创建的 jQuery 插件中,要从插件外部访问其方法,我必须执行类似的操作

$("#testItem").data('pluginName').foo_public_method()

但是,我已经看到其他插件提供了类似于以下内容的 API

$('#testItem').pluginName('foo_public_method')

如何启用此类功能?

jsFiddle

4

1 回答 1

1

您需要询问传递给插件实例的参数,并检查插件是否已经在元素上实例化。

从您的示例来看,插件实例存储在data元素的属性中,因此检查起来应该很简单。然后,您可以使用arguments关键字访问已传入的任何内容。

在下面的代码中,我将this作为调用插件的单个元素。

var instance = $(this).data('pluginname');
var args = $.makeArray(arguments);
if (!instance) {
    // create the plugin on the element using args as an object
}
else {
    // plugin already exists
    if (typeof args[0] == "string") {
        // arg0 = property
        // arg1 = value
    }
    else {
        // logic for passing in arguments as an object
    }
}
于 2013-08-13T09:24:49.310 回答