multistage.js 2.75 KB
/**
     * @author zzf
     */
    
    function OperationList (param){
    	var config = {
    		pid : 'cid',
    		txt : 'cname',
    		viewid : 'categoryId',
    		page : 5
    	};
    	var _List = [];
    	
    	var methods = {
    		heavy : function (obj) {
    			if(_List.length == 0){
    				_List.push(obj);
    				return _List;
    			};
    		    for (var i=0; i < _List.length; i++) {
    		    	for (var k=0; k < _List[i].length; k++) {
    				   if(obj[obj.length - 1][param.pid] == _List[i][k][param.pid]){
    			    		return _List;
    				   };
    				};
    			};
    			_List.push(obj);
    		},
    		add : function(){
    			if(_List.length >= param.page){
    				return false;
    			};
    			var data = $(this).prev().find('.title').find('.region-data').html();
    			data = JSON.parse(data);
    			methods.heavy(data);
    			methods.updateData();
    			
    			return false;
    		},
    		del : function(){
				var leng = $(this).parent().length;
    			if(leng <= 1){
    				$(this).parent().parent().hide();
    			};
    			var index = parseInt($(this).parent().attr('page'));
    			_List.splice(index, 1);
				$(this).parent().remove();
    			methods.updateData();
    			return false;
    		},
    		updateData : function(){
    			if(_List.length > 0){
    				$('.'+param.view).show();
    			};
    			param.fun(_List);
    		},
    		setData : function(){
    		    var vals = [];
    			var ids = $('#'+param.viewid).val();
    			$('.'+param.view+' div').each(function(){
    				vals.push($(this).attr('val'));
    			});
    			if(vals.length <= 0){
    				return false;
    			};
    			ids = ids.split(',');
    			for (var i=0; i < vals.length; i++) {
    				var aobj = {};
    				var alist = [];
    				aobj[config.pid] = ids[i];
    				aobj[config.txt] = vals[i];
    				alist.push(aobj);
    				_List.push(alist);
    			};
    		},
    		dataType : function(){
    			var ids = $('#'+param.viewid).val();
    			ids = ids.split(',');
    			var view = '';
    			for (var i=0; i < ids.length-1; i++) {
    				var aobj = {};
    				var dat = ids[i].split('/');
    				var alist = [];
    				if(! dat || ! dat[1]){
    					return false;
    				};
    				aobj[config.pid] = dat[0];
    				aobj[config.txt] = dat[1];
    				alist.push(aobj);
    				_List.push(alist);
    				view += '<div  page="'+i+'" class="more-cell">'+dat[1]+'<span style="visibility: hidden;"></span></div>';
    				$('.'+param.view).html('');
    			    $('.'+param.view).append(view);
    			};
    		}
    	};
    	
    	param = $.extend(config, param);
    	if(param.viewid == "categoryId"){
    		methods.setData();
    	}else{
    		methods.dataType();
    	};

    	$('.'+param.add).click(methods.add);
    	
    	$('.'+param.del).live('click', methods.del);
    };