js过滤文本封装 有手动和自动

/**
             * 过滤
             * */
            var filter = {
                'filterObj':'table.appLogList tbody tr',
                'searchObj':'.local-search select',
                'searchAttr':new Array('name.product', 'name.menuType', 'name.featureType', 'name.feature', 'name.app', 'name.package','name.menu'),
                'allObj':'',
                'auto':function (o,so) {
                    //获取所有满足的条件
                    //列出所有可能
                    var o = o?$(o):$(this.filterObj);
                    var so=so?so:this.searchObj;
                    var len = o.size();
                    var searchAttr = this.searchAttr;
                    var targetO,text,searchV,searchInfo=new Array(),recordO=new Array(),filterAttr=new Array();

                    for(var i=0;i<len;i++)
                    {
                        recordO[i] = o.eq(i);

                        for(var j in searchAttr)
                        {
                            searchInfo[j] = searchAttr[j].split('.');

                            searchV = $(so+'['+searchInfo[j][0]+'='+searchInfo[j][1]+']').val();

                            if(!searchV)
                            {
                                filterAttr[j] = searchAttr[j];
                                continue;
                            }

                            text = recordO[i].children("."+searchInfo[j][1]).text().trim();

                            if(searchV != text)
                            {
                                delete recordO[i]
                                break;
                            }

                        }
                    }

//console.log(filterAttr);
                    var existText=new Array(),markExist = new Array(),filterText,count=0;
                    for(var i in recordO)
                    {
                        for(var j in filterAttr)
                        {
                            if(count == 0)
                            {
                                console.log(so+'['+searchInfo[j][0]+'='+searchInfo[j][1]+']');
                                $(so+'['+searchInfo[j][0]+'='+searchInfo[j][1]+']').html('');
                                $(so+'['+searchInfo[j][0]+'='+searchInfo[j][1]+']').prepend('<option value="" selected="selected">请选择...</option>');//给予悔棋的机会
                            }

                            filterText = recordO[i].children("."+searchInfo[j][1]).text().trim();


                            if(typeof existText[j] == 'undefined')
                                existText[j] = '';
                            if(existText[j].indexOf(filterText) != -1)
                                continue;
                            existText[j] += filterText+',';
                            /*if(!markExist[j] && existText[j].split(",").length > 2)
                             {
                             markExist[j] = '1';
                             $(so+'['+searchInfo[j][0]+'='+searchInfo[j][1]+']').prepend('<option value="" selected="selected">请选择...</option>');
                             }*/

                            $(so+'['+searchInfo[j][0]+'='+searchInfo[j][1]+']').append('<option value="'+filterText+'">'+filterText+'</option>');
                        }
                        count++;
                    }


                },
                'handler':function (o,so) {

                    var o = o?$(o):$(this.filterObj);
                    var so=so?so:this.searchObj;
                    var len = o.size();
                    var searchAttr = this.searchAttr;
                    var targetO,text,searchV,searchInfo=new Array();

                    for(var i=0;i<len;i++)
                    {
                        targetO = o.eq(i);

                        for(var j in searchAttr)
                        {

                            searchInfo[j] = searchAttr[j].split('.');

                            searchV = $(so+'['+searchInfo[j][0]+'='+searchInfo[j][1]+']').val();

                            if(!searchV)
                            {
                                targetO.show();
                                continue;
                            }

                            text = targetO.children("."+searchInfo[j][1]).text().trim();

                            if(searchV != text)
                            {
                                targetO.hide();
                                break;
                            }
                            else
                            {
                                targetO.show();
                            }
                        }
                    }
                }
            };

 

posted on 2017-01-03 19:21  小乔流水人家  阅读(149)  评论(0)    收藏  举报

导航