Enhance CSS selector for IE performance

This commit is contained in:
Nicolas Le Goff
2013-11-05 14:50:27 +01:00
parent 81d464b3b0
commit 311f2557d3

View File

@@ -183,32 +183,33 @@ function checkBases(bool)
function checkFilters(save) function checkFilters(save)
{ {
var danger = false; var danger = false;
var search = {}; var search = {
var adv_box = $('form.phrasea_query .adv_options'); bases: {},
search.bases = {}; fields: {},
search.fields = {}; dates: {},
search.dates = {}; status: {}
search.status = {}; };
var scroll = $('.field_filter select').scrollTop();
var switches = $('#sbasfiltercont .field_switch'); var adv_box = $('form.phrasea_query .adv_options');
var container = $("#sbasfiltercont");
var fieldsSelect = $('.field_filter select', container);
var scroll = fieldsSelect.scrollTop();
var switches = $('.field_switch', container);
switches.filter('.was').removeClass('was'); switches.filter('.was').removeClass('was');
switches.filter('option:selected, input:checked').addClass('was'); switches.filter('option:selected, input:checked').addClass('was');
$('#sbasfiltercont select option:selected:not(".default-selection")').removeAttr('selected').selected(false); $('select option:selected:not(".default-selection")', container).removeAttr('selected').selected(false);
$('#sbasfiltercont select option.field_switch').addClass("hidden"); $('select option.field_switch', container).addClass("hidden");
$('#sbasfiltercont input.field_switch:checked').removeAttr('checked'); $('input.field_switch:checked', container).removeAttr('checked');
$('#sbasfiltercont input.field_switch:checkbox').parent().hide(); $('input.field_switch:checkbox', container).parent().hide();
$('.field_filter, .status_filter, .date_filter', adv_box).removeClass('danger'); $('.field_filter, .status_filter, .date_filter', adv_box).removeClass('danger');
var adv_box = $('form.phrasea_query .adv_options');
$.each($('.sbascont', adv_box), function(){ $.each($('.sbascont', adv_box), function(){
var sbas_id = $(this).parent().find('input[name="reference"]').val(); var sbas_id = $(this).parent().find('input[name="reference"]').val();
search.bases[sbas_id] = new Array(); search.bases[sbas_id] = new Array();
@@ -224,7 +225,7 @@ function checkFilters(save)
if(checked.length>0) if(checked.length>0)
{ {
var sbas_fields = $('#sbasfiltercont .field_' + sbas_id).removeClass("hidden"); var sbas_fields = $('.field_' + sbas_id, container).removeClass("hidden");
sbas_fields.filter('option').show().filter('.was').removeClass('was').attr('selected', 'selected').selected(true); sbas_fields.filter('option').show().filter('.was').removeClass('was').attr('selected', 'selected').selected(true);
sbas_fields.filter(':checkbox').parent().show().find('.was').attr('checked','checked').removeClass('was'); sbas_fields.filter(':checkbox').parent().show().find('.was').attr('checked','checked').removeClass('was');
} }
@@ -234,7 +235,7 @@ function checkFilters(save)
}); });
}); });
search.fields = (search.fields = $('.field_filter select').val()) !== null ? search.fields : new Array; search.fields = (search.fields = fieldsSelect.val()) !== null ? search.fields : new Array;
var reset_field = false; var reset_field = false;
$.each(search.fields, function(i,n){ $.each(search.fields, function(i,n){
@@ -243,7 +244,7 @@ function checkFilters(save)
}); });
if(reset_field) if(reset_field)
{ {
$('#sbasfiltercont select[name="fields[]"] option:selected').removeAttr('selected').selected(false); $('select[name="fields[]"] option:selected', container).removeAttr('selected').selected(false);
search.fields = new Array; search.fields = new Array;
} }
@@ -271,7 +272,8 @@ function checkFilters(save)
$('.date_filter', adv_box).addClass('danger'); $('.date_filter', adv_box).addClass('danger');
} }
$('.field_filter select').scrollTop(scroll); fieldsSelect.scrollTop(scroll);
if(save===true) if(save===true)
setPref('search',JSON.stringify(search)); setPref('search',JSON.stringify(search));