Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
jquery core: Closes #3255. The div used in jQuery.clean is emptied in…
… the end. Cleaning the parentNode's properties of the elements.
  • Loading branch information
flesler committed Dec 25, 2008
1 parent 4b25b14 commit 0e3e470
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
8 changes: 6 additions & 2 deletions src/core.js
Expand Up @@ -909,13 +909,14 @@ jQuery.extend({
},

clean: function( elems, context, fragment ) {
var ret = [], scripts = [];
context = context || document;

// !context.createElement fails in IE with an error but returns typeof 'object'
if ( typeof context.createElement === "undefined" )
context = context.ownerDocument || context[0] && context[0].ownerDocument || document;

var ret = [], scripts = [], div = context.createElement("div");

jQuery.each(elems, function(i, elem){
if ( typeof elem === "number" )
elem += '';
Expand All @@ -933,7 +934,7 @@ jQuery.extend({
});

// Trim whitespace, otherwise indexOf won't work as expected
var tags = jQuery.trim( elem ).toLowerCase(), div = context.createElement("div");
var tags = jQuery.trim( elem ).toLowerCase();

var wrap =
// option or optgroup
Expand Down Expand Up @@ -1009,6 +1010,9 @@ jQuery.extend({
ret = jQuery.merge( ret, elem );

});

// Clean up
div.innerHTML = "";

if ( fragment ) {
for ( var i = 0; ret[i]; i++ ) {
Expand Down
14 changes: 13 additions & 1 deletion test/unit/core.js
Expand Up @@ -451,7 +451,7 @@ test("attr(Hash)", function() {
});

test("attr(String, Object)", function() {
expect(17);
expect(19);
var div = jQuery("div").attr("foo", "bar");
fail = false;
for ( var i = 0; i < div.size(); i++ ) {
Expand Down Expand Up @@ -515,6 +515,16 @@ test("attr(String, Object)", function() {
}
ok( thrown, "Exception thrown when trying to change type property" );
equals( "checkbox", jQuery(check).attr('type'), "Verify that you can change the type of an input element that isn't in the DOM" );

var check = jQuery("<input />");
var thrown = true;
try {
check.attr('type','checkbox');
} catch(e) {
thrown = false;
}
ok( thrown, "Exception thrown when trying to change type property" );
equals( "checkbox", check.attr('type'), "Verify that you can change the type of an input element that isn't in the DOM" );
});

if ( !isLocal ) {
Expand Down Expand Up @@ -1139,6 +1149,8 @@ test("is(String)", function() {
});

test("jQuery.merge()", function() {
expect(6);

var parse = jQuery.merge;

same( parse([],[]), [], "Empty arrays" );
Expand Down

0 comments on commit 0e3e470

Please sign in to comment.