调整jquery插件以接受选项?

时间:2011-11-15 12:49:24

标签: jquery jquery-plugins

我正在使用一个应该接受选项的jquery插件,但不是出于某种原因。 (也许它从未完成?)

代码已经设置为接受选项,但似乎没有传递选项对象。

这是插件构造函数:

$.fn.extend({ // extend jQuery.fn object
    pluginName: $.pluginName.construct
});

哪个电话:

     $.extend({
    pluginName: new function(options) {
        var defaults = {bla: 1};
        var options = $.extend(defaults, options);
                ....

        this.construct = function() {
                    return this.each(function() {
                    .....
                 }
            }
     });

所以,我对第一段代码进行了以下更改:

$.fn.extend({ // extend jQuery.fn object
    pluginName: function(options) {
        return $.pluginName.construct(options);
    }
});

认为这很容易。 (我从未创建过jquery插件)。但是,它现在给了我一个错误:

 TypeError: 'undefined' is not a function (evaluating 'this.each')

我确定它不正确,因为.construct方法不采用选项,但是“new function(options)”方法会这样做,其次,我可能需要以某种方式传递$ this。

任何人都可以给我一个如何解决这个问题的提示吗?

它应该可以这样调用:

$('#id').pluginName({first: true, blabla: "yes"});

编辑:我目前对插件的更改可在此处找到:http://jsfiddle.net/fbF8w/ - 如果有人想仔细看看。

编辑:让它运转起来。没关系。感谢。

谢谢, 韦斯利

1 个答案:

答案 0 :(得分:0)

我不知道你正在使用什么教程,但我不确定这一部分:

this.construct = function() {
                return this.each(function() {
                .....
             }
        }

尝试像这里描述的那样(我已经以这种方式实现了很多插件):http://www.queness.com/post/112/a-really-simple-jquery-plugin-tutorial

(function($){

    $.fn.extend({ 

        //pass the options variable to the function
        pluginname: function(options) {


            //Set the default values, use comma to separate the settings, example:
            var defaults = {
                padding: 20,
                mouseOverColor : '#000000',
                mouseOutColor : '#ffffff'
            }

            var options =  $.extend(defaults, options);

            return this.each(function() {
                var o = options;

                //code to be inserted here
                //you can access the value like this
                alert(o.padding);

            });
        }
    });

})(jQuery);