有点非正统的请求。我试图为一个独特的大(5-25k结果集)进行无限滚动。在IE9& 10上选择2自己的中断/锁定。
使用https://stackoverflow.com/a/33174942我已经能够实现无限滚动的基本功能。
但是,在非滚动设置中选择项目时,您总是会返回到列表顶部,但是当在分页设置中选择项目时,它将选择并关注该项目。
我已经对所选页面进行了修改(也进行了各种过滤更改)但是我看不到将前置加载到此列表的方法。
当前代码:
jQuery.fn.extend({
PageSelect: function (Attribute, Value, DefaultValue) {
var that = this;
DefaultValue = typeof DefaultValue !== 'undefined' ? DefaultValue : -1;
$.fn.select2.amd.require(
['select2/data/array', 'select2/utils'],
function (ArrayData, Utils) {
function CustomData($element, options) {
CustomData.__super__.constructor.call(this, $element, options);
}
function contains(str1, str2) {
return new RegExp(str2, "i").test(str1);
}
Utils.Extend(CustomData, ArrayData);
CustomData.prototype.query = function (params, callback) {
if (!("page" in params)) {
params.page = Math.ceil((that.prop('selectedIndex') + 1) / 50); //Originally and Functionally = 1
}
var pageSize = 50;
var attrValue = DefaultValue;
var results = this.$element.children().map(function (i, elem) {
attrValue = elem.getAttribute(Attribute)
if (Attribute == null || Value == "-1" || attrValue == Value || attrValue == DefaultValue)
if (contains(elem.innerText || elem.textContent, params.term)) {
return {
id: elem.value,
text: elem.innerText || elem.textContent
};
}
});
callback({
results: results.slice((params.page - 1) * pageSize, params.page * pageSize),
pagination: {
more: results.length >= params.page * pageSize
}
});
};
return that.select2({
ajax: {},
width: "100%",
dataAdapter: CustomData
});
});
}
});