jquery插件方法返回值

时间:2011-06-25 07:04:39

标签: jquery plugins methods

我正在编写一个插件,用于下拉列表的一些常见任务。选定的Index方法需要向我返回一个值。如何在插件中完成此操作,其中某些方法可能会或可能不会返回值?对于不返回值的方法,我希望保持可链接性。

jQuery.fn.dropdownHelper = function(method) {
var methods = {
    init: function(){ },
    empty: function(){
        if (this.tagName == 'SELECT')
            this.options.length = 0;
    },
    selectedIndex: function(){
        var index = this.selectedIndex; 
        if(index == 'undefined')
            index = -1;
        alert (index);
        return index;   
    }
};
return this.each(function() {    
    // Method calling logic
    if ( methods[method] )
        return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
    else if ( typeof method === 'object' || ! method )
        return methods.init.apply( this, arguments );
    else
        $.error( 'Method ' +  method + ' does not exist' );
});
};

1 个答案:

答案 0 :(得分:1)

“除非你从插件中返回一个内在值,否则总是让你的插件函数返回this关键字以保持可链接性。” - Plugins/Authoring on docs.jquery.com

这意味着您从selectedIndex函数返回索引(内在值),就像您当前一样。然后,对于当前未指定任何返回值的所有其他函数,返回this关键字以保持可链接性。例如,要在调用.dropdownHelper('empty')时保持可链接性,请尝试以下操作。

empty: function(){
    if (this.tagName == 'SELECT')
        this.options.length = 0;

    return this;
},

如果这不起作用,请尝试返回$(this)。