Hello i have really large function in Jquery, which gives me an error in Microsoft Edge browser, but in some older version. It is working as expected in other browsers. I think that older edge versions are using less memory, that is why this error do exists. So i have this line of code.
setupElements($('body'));
And this really large function it has 2000 - 3000 lines with bunch of find().
function setupElements(sel) {
var numOfAddedRows = 0;
sel
.find('.fileupload').each(configureFileUploader).end()
.find('select.selectmenu').each(handleSelectMenu).end()
.find('.progress.progress-striped').each(function () {
$(this).css('width',$(this).data('percentComplete'));
})
.end()
.find('#assignbibs-skip_options-overwrite').click(function(){
if($(this).val() == "overwrite"){
$("#assign-bibs-event-form").addClass("confirm-overwrite-complete");
}
}).end()
.find('div[type="javascript"]').each(function(index, element){
var script = $(this).html();
eval(script);
$(this).remove();
}).end()
.find('.toggleResultsTable').click(function(event){
$('#progressForm').toggleClass('show-results');
event.preventDefault();
}).end()
.find('.useEndDate').click(useEndDate)
.end()
.find('.useEndDate').each(useEndDate)
.end()
.find('#uploadCourseMap').on('click', function() {
handlePopup(this);
}).end()
.find('input.filterType').on('change', function() {
displayBasedOnFilterType($(this).val());
})
.end()
.find('#useEndDate').on('click', useDateFilter)
.end()
.find('#event-wants_photo_purchasing').on('click', updatePhotosSection)
.end()
.find('#event-wants_photo_purchasing').each(function() {
updatePhotosSection();
})
.end()
.find('input.filterType:checked').each(function() {
displayBasedOnFilterType($(this).val())
})
.end()
.find('#create-email_list-date-allAvalible-all').each(function() {
if ($(this).attr('checked')) {
$("#fr-create-email_list-date-dateRange").hide();
}
})
.end()
.find('#create-email_list-date-allAvalible-all').live('change',function() {
if ($(this).attr("checked")) {
$("#fr-create-email_list-date-dateRange").hide();
}
else {
$("#fr-create-email_list-date-dateRange").show();
}
}).end()
.find('.payment_structure').on("click",function(){
var val = $("input[name='regchoice[advanced_payment_structure]']:checked").val();
var participantsChoice = $("label[for='regchoice-pricing_change_type-PARTICIPANTS'],#regchoice-pricing_change_type-PARTICIPANTS");
if ($.inArray(val, ['CAPTAIN_PAYS_AFTER', 'CAPTAIN_CHOOSE']) !==-1) {
participantsChoice.addClass('hide');
$('#regchoice-pricing_change_type-DATE').click();
}
else {
participantsChoice.removeClass('hide').show();
}
}).end()
.find('.modal').on("show", function(){
$('body').css({overflow: 'hidden'});
}).on('hidden', function(){
$('body').css({overflow: ''});
}).end()
.find('#fr-exportType').on('click', 'input[name="exportType"]', function() {
$('#fr-raceID,#fr-entry-status,#fr-lastID').toggle($(this).val() === "0");
$('#fr-importHistoryFile, #fr-preamble').toggle($(this).val() === "1");
}).end().find('#edit-bracket-rule-form, #create-bracket-rule-form').each(function(e) {
var primaryBracket = $('.br-policy.btn-success').last().val();
setPrimaryBracketKinect(primaryBracket);
}).end()
.find('#edit-bracket-rule-form .custom-bracket-rule, #create-bracket-rule-form .custom-bracket-rule').on('click',function(){
$('.custom-bracket-rule').removeClass('selected');
$(this).addClass('selected');
$("#policy-custom-bracket").html($(this).text());
$("#prefered_bracket").val($(this).data('value'));
}).end()
.find('.prevent-default').on('click', function(e){
e.preventDefault();
}).end()
.find('#addAnotherRestriction').on('click', function(){
var tr = $('.tableRestrictions').find('tbody > tr:last-child');
var trSelect = $('.tableRestrictions').find('tbody > tr:last-child td:first-child select');
var selectClone = $(trSelect).clone(false);
$(selectClone).removeClass('chzn-done').show();
var trClone = $(tr).clone();
var cloneClass = $(trClone).attr('class');
var cloneNumber = cloneClass.split('-');
cloneNumber[1] = $.trim(cloneNumber[1]);
var cloneNumberLine = parseInt(cloneNumber[1]) + 1;
$(trClone).attr('class', 'line-' + cloneNumberLine);
$('.tableRestrictions').find('tbody').append(trClone);
var inputNumber = parseInt(cloneNumber[1])-1;
var elements = new Array('sex', 'min_members', 'max_members', 'min_age', 'max_age');
for(var i in elements) {
$('table.tableRestrictions tr.line-' + cloneNumberLine + ' dt').attr('id', 'team_bracket-restrictions-'+cloneNumber[1]+'-'+elements[i]+'-label');
$('table.tableRestrictions tr.line-' + cloneNumberLine + ' dd').attr('id', 'team_bracket-restrictions-'+cloneNumber[1]+'-'+elements[i]+'-element');
$('table.tableRestrictions tr.line-' + cloneNumberLine + ' #team_bracket-restrictions-'+inputNumber+'-'+elements[i]).attr('name', 'team_bracket[restrictions]['+cloneNumber[1]+']['+elements[i]+']');
$('table.tableRestrictions tr.line-' + cloneNumberLine + ' #team_bracket-restrictions-'+inputNumber+'-'+elements[i]).attr('id', 'team_bracket-restrictions-'+cloneNumber[1]+'-'+elements[i]);
$('table.tableRestrictions tr.line-' + cloneNumberLine + ' #team_bracket-restrictions-'+cloneNumber[1]+'-'+elements[i]).val('').trigger('change');
}
$('table.tableRestrictions tr.line-' + cloneNumberLine + ' td:first-child').html('<dt> </dt><dd></dd>');
$('table.tableRestrictions tr.line-' + cloneNumberLine + ' td:first-child').find('dd').html($(selectClone));
$('table.tableRestrictions tr.line-' + cloneNumberLine + ' td:first-child select').addClass('teamRestrictionsInput').attr('id', 'team_bracket-restrictions-'+cloneNumber[1]+'-sex')
.attr('name', 'team_bracket[restrictions]['+cloneNumber[1]+'][sex]').chosen({disable_search_threshold: 10});
var remove = $('table.tableRestrictions tbody tr td:last-child').html('<a href="#" class="removeRestriction">Remove</a>');
$('.selectRestriction').each(function(index, element){
$(element).trigger('chosen:updated');
});
resizeModal();
}).end()
etc...
Discovered if i remove two random find() methods error is gone. Any idea how to optimize this, since this is legacy code total refactoring is not possible, just trying to find some workaround.