diff --git a/src/manipulation/support.js b/src/manipulation/support.js index e3fa9d479..01d2a0ad1 100644 --- a/src/manipulation/support.js +++ b/src/manipulation/support.js @@ -3,14 +3,13 @@ define([ ], function( support ) { (function () { - var input, fragment, - div = document.createElement("div"); + var fragment = document.createDocumentFragment(), + div = document.createElement("div"), + input = document.createElement("input"); // Setup div.setAttribute( "className", "t" ); - div.innerHTML = "
a"; - input = div.getElementsByTagName("input")[ 0 ]; - input.type = "checkbox"; + div.innerHTML = "
a"; // IE strips leading whitespace when .innerHTML is used support.leadingWhitespace = div.firstChild.nodeType === 3; @@ -32,20 +31,18 @@ define([ input.checked = true; support.noCloneChecked = input.cloneNode( true ).checked; - // #11217 - WebKit loses check when the name is after the checked attribute - input.checked = false; - input.setAttribute( "checked", "t" ); - input.setAttribute( "name", "t" ); - - fragment = document.createDocumentFragment(); - fragment.appendChild( input ); - // Check if a disconnected checkbox will retain its checked // value of true after appended to the DOM (IE6/7) + fragment.appendChild( input ); support.appendChecked = input.checked; - // WebKit doesn't clone checked state correctly in fragments - support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + // #11217 - WebKit loses check when the name is after the checked attribute + fragment.appendChild( div ); + div.innerHTML = ""; + + // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 + // old WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; // Support: IE<9 // Opera does not clone events (and typeof div.attachEvent === undefined). @@ -71,7 +68,7 @@ define([ } // Null elements to avoid leaks in IE. - input = fragment = div = null; + fragment = div = input = null; })(); return support;