@@ 6027-6083 (lines=57) @@ | ||
6024 | } |
|
6025 | } |
|
6026 | ||
6027 | function cloneFixAttributes( src, dest ) { |
|
6028 | var nodeName; |
|
6029 | ||
6030 | // We do not need to do anything for non-Elements |
|
6031 | if ( dest.nodeType !== 1 ) { |
|
6032 | return; |
|
6033 | } |
|
6034 | ||
6035 | // clearAttributes removes the attributes, which we don't want, |
|
6036 | // but also removes the attachEvent events, which we *do* want |
|
6037 | if ( dest.clearAttributes ) { |
|
6038 | dest.clearAttributes(); |
|
6039 | } |
|
6040 | ||
6041 | // mergeAttributes, in contrast, only merges back on the |
|
6042 | // original attributes, not the events |
|
6043 | if ( dest.mergeAttributes ) { |
|
6044 | dest.mergeAttributes( src ); |
|
6045 | } |
|
6046 | ||
6047 | nodeName = dest.nodeName.toLowerCase(); |
|
6048 | ||
6049 | // IE6-8 fail to clone children inside object elements that use |
|
6050 | // the proprietary classid attribute value (rather than the type |
|
6051 | // attribute) to identify the type of content to display |
|
6052 | if ( nodeName === "object" ) { |
|
6053 | dest.outerHTML = src.outerHTML; |
|
6054 | ||
6055 | } else if ( nodeName === "input" && (src.type === "checkbox" || src.type === "radio") ) { |
|
6056 | // IE6-8 fails to persist the checked state of a cloned checkbox |
|
6057 | // or radio button. Worse, IE6-7 fail to give the cloned element |
|
6058 | // a checked appearance if the defaultChecked value isn't also set |
|
6059 | if ( src.checked ) { |
|
6060 | dest.defaultChecked = dest.checked = src.checked; |
|
6061 | } |
|
6062 | ||
6063 | // IE6-7 get confused and end up setting the value of a cloned |
|
6064 | // checkbox/radio button to an empty string instead of "on" |
|
6065 | if ( dest.value !== src.value ) { |
|
6066 | dest.value = src.value; |
|
6067 | } |
|
6068 | ||
6069 | // IE6-8 fails to return the selected option to the default selected |
|
6070 | // state when cloning options |
|
6071 | } else if ( nodeName === "option" ) { |
|
6072 | dest.selected = src.defaultSelected; |
|
6073 | ||
6074 | // IE6-8 fails to set the defaultValue to the correct value when |
|
6075 | // cloning other types of input fields |
|
6076 | } else if ( nodeName === "input" || nodeName === "textarea" ) { |
|
6077 | dest.defaultValue = src.defaultValue; |
|
6078 | } |
|
6079 | ||
6080 | // Event data gets referenced instead of copied if the expando |
|
6081 | // gets copied too |
|
6082 | dest.removeAttribute( jQuery.expando ); |
|
6083 | } |
|
6084 | ||
6085 | jQuery.buildFragment = function( args, nodes, scripts ) { |
|
6086 | var fragment, cacheable, cacheresults, doc, |
@@ 5330-5380 (lines=51) @@ | ||
5327 | } |
|
5328 | } |
|
5329 | ||
5330 | function cloneFixAttributes(src, dest) { |
|
5331 | // We do not need to do anything for non-Elements |
|
5332 | if ( dest.nodeType !== 1 ) { |
|
5333 | return; |
|
5334 | } |
|
5335 | ||
5336 | var nodeName = dest.nodeName.toLowerCase(); |
|
5337 | ||
5338 | // clearAttributes removes the attributes, which we don't want, |
|
5339 | // but also removes the attachEvent events, which we *do* want |
|
5340 | dest.clearAttributes(); |
|
5341 | ||
5342 | // mergeAttributes, in contrast, only merges back on the |
|
5343 | // original attributes, not the events |
|
5344 | dest.mergeAttributes(src); |
|
5345 | ||
5346 | // IE6-8 fail to clone children inside object elements that use |
|
5347 | // the proprietary classid attribute value (rather than the type |
|
5348 | // attribute) to identify the type of content to display |
|
5349 | if ( nodeName === "object" ) { |
|
5350 | dest.outerHTML = src.outerHTML; |
|
5351 | ||
5352 | } else if ( nodeName === "input" && (src.type === "checkbox" || src.type === "radio") ) { |
|
5353 | // IE6-8 fails to persist the checked state of a cloned checkbox |
|
5354 | // or radio button. Worse, IE6-7 fail to give the cloned element |
|
5355 | // a checked appearance if the defaultChecked value isn't also set |
|
5356 | if ( src.checked ) { |
|
5357 | dest.defaultChecked = dest.checked = src.checked; |
|
5358 | } |
|
5359 | ||
5360 | // IE6-7 get confused and end up setting the value of a cloned |
|
5361 | // checkbox/radio button to an empty string instead of "on" |
|
5362 | if ( dest.value !== src.value ) { |
|
5363 | dest.value = src.value; |
|
5364 | } |
|
5365 | ||
5366 | // IE6-8 fails to return the selected option to the default selected |
|
5367 | // state when cloning options |
|
5368 | } else if ( nodeName === "option" ) { |
|
5369 | dest.selected = src.defaultSelected; |
|
5370 | ||
5371 | // IE6-8 fails to set the defaultValue to the correct value when |
|
5372 | // cloning other types of input fields |
|
5373 | } else if ( nodeName === "input" || nodeName === "textarea" ) { |
|
5374 | dest.defaultValue = src.defaultValue; |
|
5375 | } |
|
5376 | ||
5377 | // Event data gets referenced instead of copied if the expando |
|
5378 | // gets copied too |
|
5379 | dest.removeAttribute( jQuery.expando ); |
|
5380 | } |
|
5381 | ||
5382 | jQuery.buildFragment = function( args, nodes, scripts ) { |
|
5383 | var fragment, cacheable, cacheresults, |