MediaWiki:Gadget-FilterDiv.js
跳到导航
跳到搜索
注意:在保存之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。
- Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-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();
}
});
}
});