Added code to short-circuit a .each() loop.
[jquery.git] / src / jquery / jquery.js
index d8d2564..8332f64 100644 (file)
@@ -50,8 +50,10 @@ jQuery = function(a,c) {
                return new jQuery(a,c);
 
        // Handle HTML strings
-       var m = /^[^<]*(<.+>)[^>]*$/.exec(a);
-       if ( m ) a = jQuery.clean( [ m[1] ] );
+       if ( a.constructor == String ) {
+               var m = /^[^<]*(<.+>)[^>]*$/.exec(a);
+               if ( m ) a = jQuery.clean( [ m[1] ] );
+       }
 
        // Watch for when an array is passed in
        this.get( a.constructor == Array || a.length && !a.nodeType && a[0] != undefined && a[0].nodeType ?
@@ -446,6 +448,17 @@ jQuery.fn = jQuery.prototype = {
         * $("#check2").attr('checked', false);
         * ok( document.getElementById('check2').checked == false, 'Set checked attribute' );
         *
+        * @test stop();
+        * $.get('data/dashboard.xml', function(xml) { 
+        *   var titles = [];
+        *   $('tab', xml).each(function() {
+        *     titles.push($(this).attr('title'));
+        *   });
+        *   ok( titles[0] == 'Location', 'attr() in XML context: Check first title' );
+        *   ok( titles[1] == 'Users', 'attr() in XML context: Check second title' );
+        *   start();
+        * });
+        *
         * @name attr
         * @type jQuery
         * @param String key The name of the property to set.
@@ -1371,10 +1384,10 @@ jQuery.extend({
        each: function( obj, fn, args ) {
                if ( obj.length == undefined )
                        for ( var i in obj )
-                               fn.apply( obj[i], args || [i, obj[i]] );
+                               if ( fn.apply( obj[i], args || [i, obj[i]] ) === false ) break;
                else
                        for ( var i = 0; i < obj.length; i++ )
-                               fn.apply( obj[i], args || [i, obj[i]] );
+                               if ( fn.apply( obj[i], args || [i, obj[i]] ) === false ) break;
                return obj;
        },
 
@@ -1558,7 +1571,7 @@ jQuery.extend({
                        empty: "!a.childNodes.length",
 
                        // Text Check
-                       contains: "(a.innerText||a.innerHTML).indexOf(m[3])>=0",
+                       contains: "jQuery.fn.text.apply([a]).indexOf(m[3])>=0",
 
                        // Visibility
                        visible: "a.type!='hidden'&&jQuery.css(a,'display')!='none'&&jQuery.css(a,'visibility')!='hidden'",
@@ -1828,7 +1841,7 @@ jQuery.extend({
                        "for": "htmlFor",
                        "class": "className",
                        "float": jQuery.browser.msie ? "styleFloat" : "cssFloat",
-                       cssFloat: fix["float"],
+                       cssFloat: jQuery.browser.msie ? "styleFloat" : "cssFloat",
                        innerHTML: "innerHTML",
                        className: "className",
                        value: "value",
@@ -1859,7 +1872,7 @@ jQuery.extend({
                        return elem.getAttributeNode(name).nodeValue;
                } else if ( elem.getAttribute != undefined && elem.tagName ) { // IE elem.getAttribute passes even for style
                        if ( value != undefined ) elem.setAttribute( name, value );
-                       return elem.getAttribute( name, 2 );
+                       return elem.getAttribute( name );
                } else {
                        name = name.replace(/-([a-z])/ig,function(z,b){return b.toUpperCase();});
                        if ( value != undefined ) elem[name] = value;