Bug Tracker

Changeset 4294

Show
Ignore:
Timestamp:
12/21/07 09:52:34 (1 year ago)
Author:
joern.zaefferer
Message:
 
Location:
trunk/plugins/accordion
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/plugins/accordion/lib/jquery.js

    r4275 r4294  
    77 * and GPL (GPL-LICENSE.txt) licenses. 
    88 * 
    9  * $Date: 2007-12-20 14:36:56 +0100 (Don, 20 Dez 2007) $ 
    10  * $Rev: 4251 $ 
     9 * $Date: 2007-12-21 06:47:33 +0100 (Fre, 21 Dez 2007) $ 
     10 * $Rev: 4293 $ 
    1111 */ 
    1212 
     
    325325        if ( events === true ) 
    326326            this.find("*").andSelf().each(function(i){ 
     327                if (this.nodeType == 3) 
     328                    return; 
    327329                var events = jQuery.data( this, "events" ); 
    328330 
     
    934936                // Fix "XHTML"-style tags in all browsers 
    935937                elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){ 
    936                     return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area)$/i) ? 
     938                    return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? 
    937939                        all : 
    938940                        front + "></" + tag + ">"; 
     
    18411843                    return val; 
    18421844         
    1843                 val = jQuery.event.handle.apply(elem, arguments); 
     1845                val = jQuery.event.handle.apply(arguments.callee.elem, arguments); 
    18441846         
    18451847                return val; 
    18461848            }); 
     1849        // Add elem as a property of the handle function 
     1850        // This is to prevent a memory leak with non-native 
     1851        // event in IE. 
     1852        handle.elem = elem; 
    18471853             
    18481854            // Handle multiple events seperated by a space 
     
    18791885                jQuery.event.global[type] = true; 
    18801886            }); 
     1887         
     1888        // Nullify elem to prevent memory leaks in IE 
     1889        elem = null; 
    18811890    }, 
    18821891 
     
    19421951            for ( ret in events ) break; 
    19431952            if ( !ret ) { 
     1953                var handle = jQuery.data( elem, "handle" ); 
     1954                if ( handle ) handle.elem = null; 
    19441955                jQuery.removeData( elem, "events" ); 
    19451956                jQuery.removeData( elem, "handle" ); 
     
    20552066 
    20562067    fix: function(event) { 
    2057         // Short-circuit if the event has already been fixed by jQuery.event.fix 
    2058         if ( event[ expando ] ) 
    2059             return event; 
    2060              
    20612068        // store a copy of the original event object  
    20622069        // and clone to set read-only properties 
    20632070        var originalEvent = event; 
    20642071        event = jQuery.extend({}, originalEvent); 
    2065          
    2066         // Mark the event as fixed by jQuery.event.fix 
    2067         event[ expando ] = true; 
    20682072         
    20692073        // add preventDefault and stopPropagation since  
     
    22702274         
    22712275            // Trigger any bound ready events 
    2272             $(document).triggerHandler("ready"); 
     2276            jQuery(document).triggerHandler("ready"); 
    22732277        } 
    22742278    } 
     
    29832987 
    29842988        return this.each(function(){ 
    2985             if ( this.nodeType != 1) 
    2986                 return; 
    2987  
    29882989            if ( fn.constructor == Array ) 
    29892990                queue(this, type, fn); 
  • trunk/plugins/accordion/test/leak.html

    r4288 r4294  
    77    <link rel="stylesheet" href="../demo/demo.css" /> 
    88    <script type="text/javascript" src="../lib/jquery.js"></script> 
     9    <script type="text/javascript" src="../lib/jquery.dimensions.js"></script> 
    910    <script type="text/javascript"> 
     11    $.fn.extend({ 
     12        leak: function() { 
     13            var container = this; 
     14            return this.bind("click", function clickHandler() {}); 
     15        } 
     16    }); 
     17     
    1018    $(function() { 
    11         // leaks like hell in IE 
    12         jQuery('#list2').change(function() {}); 
     19        jQuery('#list2') 
     20            .leak() 
     21            .change(function() {}); 
    1322    }); 
    1423    </script> 
     
    1827 
    1928        <dl id="list2"> 
     29            <dt class="red">Red</dt> 
     30            <dd> 
     31                Fancy stuff about red thingies. 
     32            </dd> 
     33            <dt class="green selected">Green</dt> 
     34            <dd> 
     35                Green! Green! Green! 
     36            </dd> 
     37            <dt class="blue">Blue</dt> 
     38            <dd> 
     39                Cool kids are blue. 
     40            </dd> 
    2041        </dl> 
    2142    </body>