From 906478800db84631ddbd6b132450f65a2176bd2c Mon Sep 17 00:00:00 2001 From: John Resig Date: Fri, 25 Aug 2006 18:38:24 +0000 Subject: [PATCH] Fixed some bugs with the test suite and fixed a bug with setting attributes. --- build/test/js/test.js | 2 +- build/test/test.js | 18 +++++++-------- src/jquery/jquery.js | 54 ++++++++++++++++++++----------------------- 3 files changed, 35 insertions(+), 39 deletions(-) diff --git a/build/test/js/test.js b/build/test/js/test.js index e4da77b3..44a405fd 100644 --- a/build/test/js/test.js +++ b/build/test/js/test.js @@ -4,7 +4,7 @@ function runTests(files) { function runTest( files, num ) { $.get(files[num],function(js){ - js = js.replace(/</g, "<").replace(/>/g, ">"); + js = js.replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&"); try { eval(js); diff --git a/build/test/test.js b/build/test/test.js index 453eb5db..6aeeb6b9 100644 --- a/build/test/test.js +++ b/build/test/test.js @@ -4,16 +4,15 @@ var dir = arguments[1]; var indexFile = readFile( "build/test/index.html" ); var testFile = readFile( "build/test/test.html" ); -var files = {}; var jq = parse( readFile( arguments[0] ) ); +var fileList = []; +var count = 1; + for ( var i = 0; i < jq.length; i++ ) { if ( jq[i].tests.length > 0 ) { - - var count = 1; - while ( files[ jq[i].name + count ] ) { count++; } - var name = jq[i].name + count; + var name = count + "-" + jq[i].name; var myFile = testFile .replace( /{TITLE}/g, jq[i].name ) @@ -22,17 +21,18 @@ for ( var i = 0; i < jq.length; i++ ) { var fileName = "tests/" + name + ".js"; - //writeFile( dir + "/" + fileName, myFile ); writeFile( dir + "/" + fileName, jq[i].tests.join("\n") ); - files[ fileName ] = 1; + fileList.push( fileName ); + + count++; } } var fileString = ""; -for ( var i in files ) { +for ( var i = 0; i < fileList.length; i++ ) { if ( fileString ) fileString += ", "; - fileString += "'" + i + "'"; + fileString += "'" + fileList[i] + "'"; } writeFile( dir + "/index.html", indexFile.replace( /{FILES}/g, fileString ) ); diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js index 08f325c3..017d9ad0 100644 --- a/src/jquery/jquery.js +++ b/src/jquery/jquery.js @@ -265,12 +265,10 @@ jQuery.fn = jQuery.prototype = { * @before * @result Test Image * - * @test var div = $("div"); - * div.attr({foo: 'baz', zoo: 'ping'}); - * var pass = true; - * for ( var i = 0; i < div.size(); i++ ) { - * if ( div.get(i).foo != "baz" && div.get(i).zoo != "ping" ) pass = false; - * } + * @test var pass = true; + * $("div").attr({foo: 'baz', zoo: 'ping'}).each(function(){ + * if ( this.getAttribute('foo') != "baz" && this.getAttribute('zoo') != "ping" ) pass = false; + * }); * ok( pass, "Set Multiple Attributes" ); * * @name attr @@ -290,7 +288,7 @@ jQuery.fn = jQuery.prototype = { * div.attr("foo", "bar"); * var pass = true; * for ( var i = 0; i < div.size(); i++ ) { - * if ( div.get(i).foo != "bar" ) pass = false; + * if ( div.get(i).getAttribute('foo') != "bar" ) pass = false; * } * ok( pass, "Set Attribute" ); * @@ -1255,28 +1253,26 @@ jQuery.extend({ return r; }, - attr: function(o,a,v){ - if ( a && a.constructor == String ) { - var fix = { - "for": "htmlFor", - "class": "className", - "float": "cssFloat" - }; - - a = (fix[a] && fix[a].replace && fix[a] || a) - .replace(/-([a-z])/ig,function(z,b){ - return b.toUpperCase(); - }); - - if ( v != undefined ) { - o[a] = v; - if ( o.setAttribute && a != "disabled" ) - o.setAttribute(a,v); - } - - return o[a] || o.getAttribute && o.getAttribute(a) || ""; - } else - return ""; + attr: function(elem, name, value){ + var fix = { + "for": "htmlFor", + "class": "className", + "float": "cssFloat", + innerHTML: "innerHTML", + className: "className" + }; + + if ( fix[name] ) { + if ( value != undefined ) elem[fix[name]] = value; + return elem[fix[name]]; + } else if ( elem.getAttribute ) { + if ( value != undefined ) elem.setAttribute( name, value ); + return elem.getAttribute( name, 2 ); + } else { + name = name.replace(/-([a-z])/ig,function(z,b){return b.toUpperCase();}); + if ( value != undefined ) elem[name] = value; + return elem[name]; + } }, // The regular expressions that power the parsing engine