From 3ad0ba62f03ff3d7aec7d3dfb25492cdf33350a7 Mon Sep 17 00:00:00 2001 From: timmywil Date: Wed, 12 Oct 2011 00:06:30 -0400 Subject: [PATCH] Do not call getElements on a script tag. Avoids unnecessary execution. Fixes #10176. --- src/manipulation.js | 10 ++++++---- test/unit/manipulation.js | 10 ++++++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/manipulation.js b/src/manipulation.js index 0f7f9dd9ba..11dca31000 100644 --- a/src/manipulation.js +++ b/src/manipulation.js @@ -530,10 +530,10 @@ jQuery.each({ }); function getAll( elem ) { - if ( "getElementsByTagName" in elem ) { + if ( typeof elem.getElementsByTagName !== "undefined" ) { return elem.getElementsByTagName( "*" ); - } else if ( "querySelectorAll" in elem ) { + } else if ( typeof elem.querySelectorAll !== "undefined" ) { return elem.querySelectorAll( "*" ); } else { @@ -549,9 +549,11 @@ function fixDefaultChecked( elem ) { } // Finds all inputs and passes them to fixDefaultChecked function findInputs( elem ) { - if ( jQuery.nodeName( elem, "input" ) ) { + var nodeName = (elem.nodeName || "").toLowerCase(); + if ( nodeName === "input" ) { fixDefaultChecked( elem ); - } else if ( "getElementsByTagName" in elem ) { + // Skip scripts, get other children + } else if ( nodeName !== "script" && typeof elem.getElementsByTagName !== "undefined" ) { jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked ); } } diff --git a/test/unit/manipulation.js b/test/unit/manipulation.js index c60c3201db..0b1a1e66a2 100644 --- a/test/unit/manipulation.js +++ b/test/unit/manipulation.js @@ -531,7 +531,7 @@ test("append(xml)", function() { }); test("appendTo(String|Element|Array<Element>|jQuery)", function() { - expect(16); + expect(17); var defaultText = "Try them out:" jQuery("buga").appendTo("#first"); @@ -579,7 +579,7 @@ test("appendTo(String|Element|Array<Element>|jQuery)", function() { jQuery("#moretests div:last").click(); QUnit.reset(); - var div = jQuery("
").appendTo("#qunit-fixture, #moretests"); + div = jQuery("
").appendTo("#qunit-fixture, #moretests"); equals( div.length, 2, "appendTo returns the inserted elements" ); @@ -603,6 +603,12 @@ test("appendTo(String|Element|Array<Element>|jQuery)", function() { equals( jQuery("#qunit-fixture div").length, num, "Make sure all the removed divs were inserted." ); QUnit.reset(); + + stop(); + jQuery.getScript('data/test.js', function() { + jQuery('script[src*="data\\/test\\.js"]').remove(); + start(); + }); }); var testPrepend = function(val) {