I'm reading over your first technique again...the reason I have the unique array is because there may be .RCRBFilingType a few times, so the unique array discards the duplicates and then I can wrap .RCRBFilingType once with RCWrap. Would your way do that? I'm working with .NET...if that makes any difference, that's why there are IDs like this: #QuestionnaireLV_ctrl*, for example. So if I have 4 .RCRBFilingType classes, I'm trying to put a wrap around the 4, not around each, so then I can have the items inside RCWrap display inline, instead of the default block...underneath each other. I'm not sure if that is the most clear explanation.
-TJ On Jul 30, 1:03 am, Ricardo <ricardob...@gmail.com> wrote: > Pardon the words, but that's a s***load of processing being done in > your JS, and a huge DOM! Most of the class adding, appending and CSS > should really be done server-side. Some tips to improve your script's > efficiency: > > #1 > You get all elements with class^=RC, then get their classnames one by > one, then lookup the classnames one by one again... absolutely no need > for this loop. the var 'divs' already contains all the elements you > want. uniqueArray is not required. The first 40 lines of your script > could be replaced by this: > > http://snipt.org/lQh > > But for a really great improvement, you should consider adding a > separate "RC" class to all the relevant elements: > > <div id="QuestionnaireLV_ctrl22_Panel2"> > <div class='RC RCRBAFilingType' qid='22'> > <span...><br /> > <input.../> > </div> > </div> > > So your javascript would be way shorter, simpler and faster (native > getElementsByClassName is blazing fast): > > $('.RC').wrap('<div class="RCWrap"></div>'); > > and the styles could be added via CSS: > > .RCWrap { > display: inline-block,} > > .RC { > display: inline-block, > width: 150px} > > .RC span { > display: block, > width: 300px > > } > > #2 > in the groupThis function, consider getting the elements by their IDs > instead of the "qid" attribute, native getElementsByID is also way > faster: > > function groupThis(start, end) { > var selector = ""; > for (var i = start; i <= end; i++) { > selector += "#QuestionnaireLV_ctrl"; > selector += i; > selector += "_Panel1" > if (i < end) > selector += ","; > } > return selector; > > } > > Avoiding string concatenation ("#Que.." + i + "_Panel") also gives you > a speed up. As a bonus of selecting by the IDs you avoid the dozens of > parent() calls later on. > > These two changes should already significantly improve your script's > run time. > > cheers > -- ricardo > > On Jul 28, 9:18 pm, TJ <alyssamar...@gmail.com> wrote: > > > This error message occurs on slower computers...I haven't had it > > happen on my 2 home computers. But I see that there is a potential > > problem for a number of people. > > > On Jul 28, 6:12 pm, TJ <alyssamar...@gmail.com> wrote: > > > > Thank you for your quick response. > > > > Here is a link to the page in question: http://docfiller.com/process.aspx > > > > The error when using the jQuery min file is line 19 and when using the > > > full jQuery (uncompressed) file, it is around 1988 - 2040, it varies. > > > It also varies on what iteration in processing the error occurs. > > > > I appreciate any assistance you can give. > > > > -TJ > > > > On Jul 28, 5:25 pm, "Michael Geary" <m...@mg.to> wrote: > > > > > There's no set limit on the number of selectors you can use, but as > > > > you've > > > > seen, selectors can take some time to run and eventually the browser > > > > will > > > > time out. > > > > > There's really nothing more that can be said without seeing your code. > > > > Can > > > > you post a link to the failing test page? > > > > > -Mike > > > > > > From: TJ > > > > > > Hello, > > > > > > I keep getting thisUnresponsiveJavascript error. I will > > > > > admit I have a ton of selectors and code going on. When I > > > > > use FireBug to debug that message, it stops somewhere within > > > > > the Sizzle CSS Selector part of jQuery. Different spots and > > > > > at different iterations in myscript. > > > > > > I have tried going back to jQuery 1.2.6 too, I saw some > > > > > people said that helped and using the full (uncompressed) > > > > > version too. Neither worked for me. > > > > > > Soon after the warning message, if you click continue, it > > > > > loads the rest of the javascript and the page. It seems like > > > > > I may have just a few too many selector calls? When I > > > > > comment out about 20 lines I don't get the message, but I > > > > > need those 20 lines. > > > > > > Does jQuery have a limit to how many selections it can do within the $ > > > > > (document).ready(function() { ?