возвращаемое значение метода плагина jquery - PullRequest
2 голосов
/ 25 июня 2011

Я пишу плагин для некоторых общих задач для выпадающего.Выбранный метод индекса должен вернуть мне значение.Как я могу сделать это внутри плагина, где некоторые методы могут возвращать или не возвращать значение?Для методов, которые не возвращают значение, я хочу сохранить цепочечность.

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 Ответ

1 голос
/ 24 декабря 2011

"Если вы не возвращаете внутреннее значение из своего плагина, всегда позволяйте функции вашего плагина возвращать ключевое слово this, чтобы поддерживать цепочечность."- Плагины / Авторские права на docs.jquery.com

Это означает, что вы возвращаете индекс (внутреннее значение) из функции selectedIndex, какой вы сейчас являетесь.Затем для всех других функций, для которых вы в настоящее время не указываете возвращаемое значение, вы возвращаете ключевое слово this, чтобы поддерживать возможность объединения.Например, чтобы сохранить цепочку при вызове .dropdownHelper ('empty'), попробуйте следующее.

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

    return this;
},

Если это не сработает, попробуйте вместо этого вернуть $ (this).

...