MediaWiki:Gadget-FilterDiv.js

来自Mooncell - 玩家共同构筑的FGO中文Wiki
跳到导航 跳到搜索

注意:在保存之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Internet Explorer:按住Ctrl的同时单击刷新,或按Ctrl-F5
  • Opera:前往菜单 → 历史(Mac为Opera → Preferences),或按Ctrl-Shift-Del,然后清除浏览数据 → 勾选“已缓存的图片和文件” → 清除数据
    $(function (){
    	init();
     
    	// 初始化
    	function init(){
    		// 注册事件
    		$('.filter-div--bgroup .filter-div--button').mousedown(function(e){
    			cilck_filter_button($(this));
    			e.preventDefault();
                e.stopPropagation(); 
    		});
     
    		// 为auto-first-button添加selected
    		$('.filter-div--bgroup.auto-first-button').each(function(){
    			var button_group = $(this).find('.filter-div--button');
    			if (button_group.length > 0){
    				button_group.removeClass('selected');
    				button_group.eq(0).addClass('selected');
    			}
    		});
     
    		// 刷新各个列表
    		$('.filter-div').each(function (){
    			refresh_filter($(this));
    		});
    	}
     
    	// 点击按钮
    	// 传入参数被点击的filter-div-button的obj
    	function cilck_filter_button(obj){
    		// 先重新设定选中状态
    		obj.parents('.filter-div--bgroup').eq(0).find('.filter-div--button').each(function(){
    			$(this).removeClass('selected');
    		});
    		obj.addClass('selected');
     
    		refresh_filter(obj.parents('.filter-div').eq(0));
    	}
     
    	// 刷新过滤列表
    	// 传入参数是filter-div的obj
    	function refresh_filter(filter_div_obj){
    		// 选择过滤目标
    		var filter_target = filter_div_obj.attr('data-target');
    		var filter_target_class = filter_div_obj.attr('data-target-class');
    		var obj_target = filter_div_obj;
    		if (filter_target !== undefined){
    			obj_target = $('#'+filter_target);
    		}else if(filter_target_class !== undefined){
    			obj_target = $('.'+filter_target_class);
    		}
     
    		// 读取现在的选中状态生成条件列表
    		var cond_list = []
     
    		var bgroup_obj = filter_div_obj.find('.filter-div--bgroup');
     
    		for (var i = 0;i < bgroup_obj.length;i++) {
    			var bgroup_one_obj = bgroup_obj.eq(i);
    			var selected_button_obj = bgroup_one_obj.find('.filter-div--button.selected');
    			if (selected_button_obj.length == 1) {
    				var obj = selected_button_obj.eq(0)
    				var filter_type = obj.attr('data-type');
    				if (filter_type != 'all'){
    					var filter_value = obj.attr('data-'+filter_type);
    					cond_list.push({ 'type': filter_type, 'value': filter_value })
    				}
    			}
    		}
     
    		// 刷新
    		obj_target.find('.filter-div--item').each(function(){
    			var is_show = true
    			for (var i=0;i<cond_list.length;i++) {
    				var cond_info = cond_list[i];
    				var item_value = $(this).attr('data-'+cond_info.type);
    				if (item_value != cond_info.value){
    					is_show = false;
    					break;
    				}
    			}
    			if (is_show){
    				$(this).show();
    			}else{
    				$(this).hide();
    			}
    		});
    	}
    });