jQuery自定义插件-如何正确返回结果?

jQuery自定义插件-如何正确返回结果?,jquery,object,plugins,null,undefined,Jquery,Object,Plugins,Null,Undefined,我正在创建我的第一个jQuery插件,以轻松获取所需的数据,而无需为不同的元素重复相同的脚本。我希望我的插件能够以如下形式获得指定元素及其父元素的宽度、高度、位置等信息(我以后需要使用它们): $('element').myPlugin(); // will return all $('element').myPlugin(width); // will return only width $('element').myPlugin(width, height); // will return

我正在创建我的第一个jQuery插件,以轻松获取所需的数据,而无需为不同的元素重复相同的脚本。我希望我的插件能够以如下形式获得指定元素及其父元素的宽度、高度、位置等信息(我以后需要使用它们):

$('element').myPlugin(); // will return all
$('element').myPlugin(width); // will return only width
$('element').myPlugin(width, height); // will return width and height
我不知道如何以正确的形式从插件中获取数据。我试图弄明白,但结果总是“未定义”或[Object]。如果有人能举例说明我的“[?]”部分的外观,我将不胜感激:

(function($){
    $.fn.myPlugin = function(options) {

        var defaults = {
            width: this.width(),
            height: this.height(),
            parentWidth: this.parent().width(),
            [[more]]
        }
        var options = $.extend(defaults, options);

    return this.each(function () {

    var $this = $(this);

    [[?]]

    };
})(jQuery);

一种方法是将数据存储到元素“数据对象”中。代码如下:

$.fn.myPlugin = function(options) {
    var defaults = {
        width: this.width(),
        height: this.height(),
        parentWidth: this.parent().width(),
        [[more]]
    }
    var options = $.extend(defaults, options);

    return this.each(function () {
        var $this = $(this);
        var dimen = {width: width, height: height, ..}

        $this.data('dimen', diemn);
    };
};
现在应用你的插件:

 $('selector').myPlaugin();
稍后,您可以获得以下数据:

 $('selector').data('dimen'); //will return the dimention object

可能有更好的方法可以做到这一点。

您需要插件吗?一个函数或变量会更简单吗?我相信插件将是最好的方式,因为在我的项目中使用它会非常方便。插件将计算元素的右下位置(jQuery还没有构建它)。变量更容易-这是真的,但我的实际代码已经充满了它们,而且非常混乱,所以我想重新创建它。它返回“未定义”,但我将“var dimen={width:width,…}”部分更改为“var dimen={width:defaults.width,…}”但是我仍然在寻找其他的解决方案来使用插件,比如:$('element').myPlugin(width);