我正在爲mysql
創建一個插件,包括搜索過濾器和訂單。我已經使用一些教程創建了一個插件,對於加載更多的簡單查詢(youtube like),事情進展良好。jQuery插件如何從插件中的函數獲取值
現在我正試圖添加過濾器選項到插件,並堅持從一個函數獲取值到ajax();
上更改下拉列表。該函數在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();
}
}
});
};
我怎樣才能從sort_order_by
功能將ajax
data
設置爲查詢獲得的價值PARAMS
全碼
(function ($) {
'use strict';
$.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));
對於工作代碼中看到我的回答下面或click here
概述:我已重置
stepped
價值1
重新計算的變化
感謝您的代碼,遇到多輸出問題。我的意思是它追加到現有的結果,而不是重新查詢。請在'load = function()'之前注意我的代碼上的昏迷,所以我很困惑在哪裏添加我的下拉代碼? –
我已添加完整的代碼。請通過它 –
就我而言,你可以添加一個新的參數,以函數Load()指示是否重新查詢或追加,如果它是重新查詢,清除舊項目之前調用追加你的ajax回調。 而且你也不需要聲明函數sort_order_by()。我將修改我的代碼。 – Hp93