Select2:无限滚动向上滚动

时间:2016-10-28 15:21:57

标签: javascript jquery select2

有点非正统的请求。我试图为一个独特的大(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
                });

            });
    }
    });

0 个答案:

没有答案