plugin jQuery comment obtenir de la valeur de la fonction dans le plugin

Je crée un plugin pour le résultat mysql y compris les filtres de recherche et les commandes. J’ai créé un plugin à l’aide de certains tutoriels et les choses se passent bien pour une requête simple avec load more (youtube like).

Maintenant, j’essaie d’append des options de filtrage au plugin et de m’obtenir pour obtenir de la valeur d’une fonction à la fonction ajax(); sur changer le menu déroulant. La fonction est dans la fonction pluign.

 sort_order_by = function () { var selected_val = ''; var orderby_val = ''; // check for sort order $(settings.order_by_selector).change(function () { //selected_val = $('#sort_order_by option:selected').val(); selected_val = $('option:selected', this).val(); orderby_val = (selected_val == '' || selected_val == null) ? null : selected_val; console.log(orderby_val); // this gives me result on change return orderby_val; }); return null; }, ... load = function (start, count) { console.log(sort_order_by()); // this giving me null $.ajax({ url: settings.source, type: 'get', dataType: 'json', data: {start: start, count: count, sort_order_by: sort_order_by()}, success: function (data) { var items = data.items; if (items.length) { $(items).each(function (index, value) { append(value); }); stepped = stepped + count; } if (data.last === true) { finished(); } } }); }; 

Comment obtenir la valeur de la fonction sort_order_by dans les data ajax à définir en tant que parameters de requête

Code complet

 (function ($) { 'use ssortingct'; $.fn.loadmore = function (options) { var self = this, settings = $.extend({ source: '', step: 2, order_by_selector: '#sort_order_by' }, options), stepped = 1, item = self.find('.item'), items = self.find('.items'), sort_order_by = function () { var selected_val = ''; var orderby_val = ''; // check for sort order $(settings.order_by_selector).change(function () { //selected_val = $('#sort_order_by option:selected').val(); selected_val = $('option:selected', this); orderby_val = (selected_val == '' || selected_val == null) ? null : selected_val; console.log(orderby_val); }); return orderby_val; }, finished = function () { self.find('.items-load').remove(); }, append = function (value) { var name, part; item.remove(); for (name in value) { if (value.hasOwnProperty(name)) { part = item.find('*[data-field="' + name + '"]'); if (part.length) { part.text(value[name]); } } } item.clone().appendTo(items); }, load = function (start, count) { $.ajax({ url: settings.source, type: 'get', dataType: 'json', data: {start: start, count: count, sort_order_by: sort_order_by()}, success: function (data) { var items = data.items; if (items.length) { $(items).each(function (index, value) { append(value); }); stepped = stepped + count; } if (data.last === true) { finished(); } } }); }; if (settings.source.length) { self.find('.items-load').on('click', function () { load(stepped, settings.step); return false; }); load(1, settings.step); } else { console.log('Source is require'); } } }(jQuery)); 

Pour le code de travail voir ma réponse ci-dessous ou cliquez ici

Vue d’ensemble: j’ai réinitialisé la valeur stepped sur 1 pour recalculer à la modification