[Webkit-unassigned] [Bug 33383] REGRESSION (r52082): Missing event handlers on JQuery demo page (33383)

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Feb 1 15:31:33 PST 2010


https://bugs.webkit.org/show_bug.cgi?id=33383


Ted <ted at plumvoice.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ted at plumvoice.com




--- Comment #17 from Ted <ted at plumvoice.com>  2010-02-01 15:31:31 PST ---
Since r54122 I am seeing a lot of odd behavior related to jQuery and jQuery UI.

For the original URL for this bug, http://jqueryui.com/demos/animate/, about 1
in 5 times the first run of the animation does not change the background, so
the text fades to white and the background stays white instead of turning red. 
Subsequent runs produce the correct animation.  This does not ever happen with
Safari 4.0.4 or Chrome 4.0.249.49 (35163) beta.

On my own pages, after instantiating a lot of jQuery UI widgets, I am finding
that their internal state objects are unexpectedly disappearing.  These are
normally accessible with jQuery's .data(), e.g.,

$('#tabs').tabs();
console.log(typeof $('#tabs').data('tabs')); // object
// later on after much other code has run...
console.log(typeof $('#tabs').data('tabs')); // undefined... why?

Looking into this further, it appears that at seemingly random places in my
code, the expandos that jQuery sets on elements to tie them to the datastore
are being reset to undefined.  For instance, this is a snippet from one of my
pages...

    var $pagination = $('#pagination'), 
      button = $('.ui-button')[0], i;
    for (i in button) {
      if (i.match(/^jQuery/)) { console.log(i, button[i]); }
      // produces: jQuery1265066165770 12
      // that's the expando jQuery uses to tie the element to the datastore
    }
    // the following line should have no effect on button
    // there aren't even any .ui-button's within $pagination
    console.log($pagination.find('a span'));
    // produces: a normal-looking jQuery object
    for (i in button) {
      if (i.match(/^jQuery/)) { console.log(i, button[i]); }
      // produces: jQuery1265066165770 undefined
      // where'd the expando go?
    }

The best I can figure is some over-aggressive GC that is deleting jQuery's
expandos... unfortunately the entirety of the above code is not publicly
hosted, but I'm hoping somebody else is observing what I am and can confirm.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list