> Hi, > In the below Code takes too much of time for execute I don't know > did I made any mistake.
Happy to help, I love optimizing code. > > function chkLicense() { > var firstLicDD = '', secLicDD = '', ddLicValue = '', ddStateValue > = ''; > var firstStateDD = '', SecStateDD = ''; > var IsTwoDentLICandSTATEsame = false, firstDDIndex = null, > isLicenseNotSel = false; > var isStateNotSel = false, isTwoLICsameExceptDental = false; > var isDntlMedHaveAllState = false; isLicEmpty = false; > var $myTable = $('#Licenses tr'); > $myTable.each(function(index) { .each is slower then a for loop. use for (var a = 0, len = $('#Licenses tr').size(); a < len; a++) { storing the length in a variable is faster because the length of the array doesn't need to be accessed in every loop. > var LicNo = '', ddindex = ''; > firstDDIndex = index; > if (index > 0) { > firstLicDD = $(this).find('td :DropDownList').eq(2).val(); Store $(this) in a variable for reuse, putting this in the jQuery function is a costly process. $this = $(this); firstLicDD = $(this).find('td :DropDownList').eq(2).val(); > /*For PA DropDown*/ > //firstStateDD = $(this).find('td :DropDownList').eq(11).val(); > /*For Html DropDown*/ > firstStateDD = $(this).find('td :DropDownList').eq(10).val > (); even better, store $(this).find('td :DropDownList') in a variable var ddl = $(this).find('td :DropDownList').; firstStateDD = ddl.eq(10).val(); > //if ((firstLicDD == 1) || (firstLicDD == 5)) { > if (({ 1: 1, 5: 1 })[firstLicDD]) { > if (firstStateDD == 0) { > isDntlMedHaveAllState = true; > } > } > //if (firstLicDD == '' || firstLicDD == null) { > if (firstLicDD == '' || firstLicDD == null) { > isLicenseNotSel = true; > } > if (firstStateDD == '' || firstStateDD == null) { > isStateNotSel = true; > } > LicNo = $(this).find("td").eq(2)[0].childNodes[0].value; use the stored variable and you can just get the second element directly without using .eq(2) $this.find('td')[2].childNodes[0].value; > if (LicNo == '' || LicNo == null) { > isLicEmpty = true; > } > > if (firstLicDD != "") { > $myTable.each(function(index) { > if (index > 0) { > secLicDD = '', SecStateDD = ''; > secLicDD = $(this).find('td > :DropDownList').eq(2).val(); use the stored variable secLicDD = ddl.eq(2).val(); > /*For PA DD*/ > //SecStateDD = $(this).find('td > :DropDownList').eq(11).val(); use the stored variable SecStateDD = ddl.eq(11).val(); > /*For Html.DD*/ > SecStateDD = $(this).find('td > :DropDownList').eq(10).val(); use the stored variable SecStateDD = ddl.eq(10).val(); > if (SecStateDD != '') { > for (var i = 0; i <= parseInt(SecStateDD) + 1; > i++) { this will run parseInt in every iteration of the for loop, instead store it in a variable for (var i = 0, len = parseInt(SecStateDD) + 1; i <= len; i++) { > /*For PA DD*/ > //if ($(this).find('td > :DropDownList')[11][i].value == SecStateDD) { use the stored variable ddl[11][i].value == SecStateDD) { > /*For Html.DD*/ > if ($(this).find('td > :DropDownList')[10][i].value == SecStateDD) { use the stored variable. ddl[10][i].value == SecStateDD) { > ddindex = i; > } > } > } > if (secLicDD != "") { > if (firstDDIndex != index) { > if (firstLicDD == secLicDD) { > if ((firstLicDD == 1) && (secLicDD == 1)) > { > if ((secLicDD == 1) && (SecStateDD > > 0)) { > /*For PA DD*/ > //var ddSelectedText = > $(this).find('td :DropDownList')[11][ddindex].innerHTML; use the stored variable var ddSelectedText = ddl[11][ddindex].innerHTML; > /*For Html DD*/ > var ddSelectedText = > $(this).find('td :DropDownList')[10][ddindex].innerHTML; use stored variable var ddSelectedText = ddl[10][ddindex].innerHTML; > var Prvid = > $('#PrimaryKey')[0].value; var Prvid = $('#PrimaryKey').val(); > var stateCode = ddSelectedText; > var LicenseTypeID = firstLicDD; > //fnIsAllStateForDenMed(Prvid, > stateCode, LicenseTypeID); > } > if (SecStateDD != "") { > if (firstStateDD == SecStateDD) { > > IsTwoDentLICandSTATEsame = true; > } > } > } > else { > isTwoLICsameExceptDental = true; > } > } > } > } > } > }); > > } > } > }); > if (isStateNotSel || isLicenseNotSel || IsTwoDentLICandSTATEsame > || isTwoLICsameExceptDental || isLicEmpty || > isDntlMedHaveAllState) { > var message = ' '; > if (isLicenseNotSel) { > message += " Select Licence \n" + "<br/>"; concatenating strings has a cost, try and avoid extra usages when possible. message += " Select Licence \n<br/>"; > } > if (isStateNotSel) { > message += " Select State" + "<br/>"; same message += " Select State<br/>"; > } > if (isDntlMedHaveAllState) { > message += "Dental and Medi-Caid License Type should not > have All State" + "<br/>"; same message += "Dental and Medi-Caid License Type should not have All State<br/>"; > } > if (isTwoLICsameExceptDental) { > message += "Two License Types should not be Same Except > Dental" + "<br/>"; same > } > if (IsTwoDentLICandSTATEsame) { > message += "Dental License Types should have unique state" > + "<br/>"; > } > if (isLicEmpty) { > message += "Enter License Number" + "<br/>"; > } > $('#LicenseErrormsg').html(message); I didn't see if this has a lot of nodes in it, but if it does this can be slow. jQuery checks every node before overwriting it for events to make sure that no circular references exist because there it could cause a memory leak in ie. If you know there are no events on these nodes it is much quicker to do: $('#LicenseErrormsg')[0].innerHTML = message; > return false; > } > else { > $('#LicenseErrormsg').html(""); same as above. $('#LicenseErrormsg')[0].innerHTML = ''; > return true; > } > > } > > Thank You in Advance. > Nizam Hope this helps, Josh Powell -- You received this message because you are subscribed to the Google Groups "jQuery Development" group. To post to this group, send email to jquery-...@googlegroups.com. To unsubscribe from this group, send email to jquery-dev+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/jquery-dev?hl=.