Bug Tracker

Opened 15 years ago

Last modified 12 years ago

#2649 closed bug

Change between jquery 1.2.1 and 1.2.3 on the clone() function causes lag, freezing, and crashes some browsers. — at Initial Version

Reported by: pthurmond Owned by:
Priority: major Milestone: 1.2.1
Component: core Version: 1.2.3
Keywords: clone, internet explorer, firefox Cc:
Blocked by: Blocking:


I upgraded to version 1.2.3 to fix a problem that occurs in Internet Explorer 6 and 7.

This problem is when using a function that was written to change the list of select options in one drop down when you select a particular option in another drop down.

I think the problem is caused by the clone() function. But I haven't been able to verify that for sure. I know it only happens in this function that I wrote. I will include my function below.

To be more specific on this, in 1.2.1 it would pause and take up to 90 seconds to finish executing, yet it worked perfectly in Firefox and Safari. Then I upgraded to 1.2.3 and it worked instantly and perfectly in IE7, in IE6 it worked a lot faster, in Safari, Firefox 2, and Firefox 3 Beta 4 it runs slow like IE6 and 7 did while on jquery 1.2.1. In the case of Firefox 3 Beta 5 it straight crashed the browser.

Again I am pretty sure it has to do with the bugfix in Ticket #2184 link: http://dev.jquery.com/ticket/2184

However I haven't been able to narrow it down any further. I have only included the relevant code. The setsel() function works when called by another event without any problems, so the problem is not coming from there. The event is the changing of a select option.

Here is my code... $(function() {

Item class stuff $('select.itemclass').change(function() {

var itemnum = this.id.substr(7,1); var iclass = this.value;

classChange(itemnum, iclass);



function classChange(itemnum, iclass) {

newsel = $('tr.hiddenitem select.itemcomm').clone();

if (iclass) {

Remove items that don't match the selected frieght class newsel.find('option:not(.' + iclass +')').remove();

We just removed the blank option, so add it back in newsel.prepend("<option value=></option>");


newsel.attr({id: 'riitem' + itemnum}).change(function() {

setsel('riclass' + itemnum, itemclasses[this.value]);


itd = $('select#riitem' + itemnum).parent(); itd.empty(); itd.append(newsel);

$('#riitem' + itemnum).val();


function setsel(selid,newval) {

if (newval == null)

return null;

if (!newval)

newval = "";

$('select#' + selid).val(newval);


Change History (0)

Note: See TracTickets for help on using tickets.