外部如何调用jq插件的内部方法呢?

发布于 2022-09-05 04:06:26 字数 4575 浏览 19 评论 0

(function(){
    jQuery.fn.extend({
        SeSelectDown:function(data){
            var options = {
                data:{},
                ClassName:'',
                returnVal:function(res){
                    return {
                        a:res
                    }
                }
            }

            options = $.extend(options, data);
            var _this = this;
            var DomStart = '<div class="btn-group DownBtn"><button type="button" class="btn btn-Down-value btn-default btn-sm">请选择公司</button><button type="button" class="btn btn-default btn-sm dropdown-toggle" ><span class="caret"></span></button><div class="Dropdown"><div class="Dropdown-text"><input type="text" class="DownText"></div><ul class="dropdown-menu Dropdown-menu">';
            var DomEnd = '</ul></div></div>';
            var Data = data.data;
            var ClassName = data.ClassName;
            var ArrNum = 0;
            var AddNum = 0;
            var Type = true;
            var Downlist = [];
            var Derlist = [];
            var Pagelist = [];
            Derlist[ArrNum] = [];
            Pagelist[ArrNum] = [];
            for(var i=0;i<Data.length;i++){
                Pagelist[ArrNum].push({id:Data[i].accountId,name:Data[i].accountCnName});
                if((i+1)%20==0){
                    ArrNum+=1;
                    Pagelist[ArrNum] = [];
                }
            }

            Downlist = Pagelist[0];

            Ctrl(Downlist,true);
            function Ctrl(data,is,clear){
                if(is){
                    _this.html(DomStart+AddDom(data)+DomEnd);
                }else{
                    if(clear){
                        _this.find('.Dropdown-menu').html('');
                    }
                    _this.find('.Dropdown-menu').append(AddDom(data));
                }
            }

            _this.find('.DownText').keyup(function(){
                AddNum = 0;
                var _index=0;
                ArrNum = 0;
                Derlist = [];
                Derlist[ArrNum] = [];
                var text = $(this).val();
                if(text==''){
                    Type=true;
                    Ctrl(Pagelist[0],false);
                    return false;
                }
            _this.Clear = function(){
                alert(1)
            }
                Pagelist.forEach(function(e){
                    e.forEach(function(res){
                        if(res.name.indexOf(text)>-1){
                            Derlist[ArrNum].push(res);
                            _index++;
                            if(_index==19){
                                _index=0;
                                ArrNum+=1;
                                Derlist[ArrNum] = [];
                            }
                        }
                    })
                })
                Ctrl(Derlist[0],false,true);
                Type=false;
            })

            _this.delegate('li','click',function(){
                var Value = new Object();
                Value.name=$(this).text();
                Value.id = $(this).attr('name');
                _this.find('.btn-Down-value').text($(this).text()).attr('name',$(this).attr('name'))
                _this.find('.Dropdown').stop().slideToggle(100);
                Return(Value);
            })

            //toggle
            _this.find('.dropdown-toggle').click(function(){
                _this.find('.Dropdown').stop().slideToggle(100);
            })

            //滚动加载
            _this.find('.Dropdown-menu').scroll(function(){
                if($(this).scrollTop()>$(this).height()+50){
                    AddNum+=1
                    if(Type){
                        Ctrl(Pagelist[AddNum],false);
                    }else{
                        Ctrl(Derlist[AddNum],false);
                    }
                }
            })

            //添加dom
            function AddDom(data){
                var text = '';
                for(i in data){
                    text+="<li name='"+data[i].id+"'><a href='javascript:;' title='"+data[i].name+"' >"+data[i].name+"</a></li>"
                }
                return text;
            }

            function Return(str){
                return options.returnVal(str);
            }
        }
    })
})()

最近一直在学习怎么用jq写插件,最近终于估摸着做出来了。但是有一个问题一直不知道怎么解决。如何能在外部引用内部的某一个方法呢?比如我在内部写了一个清空的方法。但是想在外部调用该怎么弄呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

违心° 2022-09-12 04:06:27

看你怎么写的了,比如说jquery.cookie这个插件,它就反回了$.cookie()和$.removeCookie()者两个方法,就可以直接调用这两个方法

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文