2011-01-09 22:58:47 +01:00
module ( "manipulation" , { teardown : moduleTeardown } ) ;
2009-04-20 19:05:18 +02:00
2010-12-21 04:23:59 +01:00
// Ensure that an extended Array prototype doesn't break jQuery
Array . prototype . arrayProtoFn = function ( arg ) { throw ( "arrayProtoFn should not be called" ) ; } ;
2009-07-12 22:19:43 +02:00
var bareObj = function ( value ) { return value ; } ;
var functionReturningObj = function ( value ) { return ( function ( ) { return value ; } ) ; } ;
2009-03-18 22:15:38 +01:00
test ( "text()" , function ( ) {
2009-11-17 20:52:08 +01:00
expect ( 2 ) ;
2009-03-18 22:15:38 +01:00
var expected = "This link has class=\"blog\": Simon Willison's Weblog" ;
2011-04-12 10:47:46 +02:00
equals ( jQuery ( "#sap" ) . text ( ) , expected , "Check for merged text of more then one element." ) ;
2009-11-17 20:52:08 +01:00
// Check serialization of text values
equals ( jQuery ( document . createTextNode ( "foo" ) ) . text ( ) , "foo" , "Text node was retreived from .text()." ) ;
2009-03-18 22:15:38 +01:00
} ) ;
2010-01-07 17:51:48 +01:00
var testText = function ( valueObj ) {
expect ( 4 ) ;
var val = valueObj ( "<div><b>Hello</b> cruel world!</div>" ) ;
equals ( jQuery ( "#foo" ) . text ( val ) [ 0 ] . innerHTML . replace ( />/g , ">" ) , "<div><b>Hello</b> cruel world!</div>" , "Check escaped text" ) ;
// using contents will get comments regular, text, and comment nodes
var j = jQuery ( "#nonnodes" ) . contents ( ) ;
j . text ( valueObj ( "hi!" ) ) ;
equals ( jQuery ( j [ 0 ] ) . text ( ) , "hi!" , "Check node,textnode,comment with text()" ) ;
equals ( j [ 1 ] . nodeValue , " there " , "Check node,textnode,comment with text()" ) ;
2010-08-26 21:36:44 +02:00
// Blackberry 4.6 doesn't maintain comments in the DOM
equals ( jQuery ( "#nonnodes" ) [ 0 ] . childNodes . length < 3 ? 8 : j [ 2 ] . nodeType , 8 , "Check node,textnode,comment with text()" ) ;
2010-01-07 17:51:48 +01:00
}
test ( "text(String)" , function ( ) {
testText ( bareObj )
} ) ;
test ( "text(Function)" , function ( ) {
testText ( functionReturningObj ) ;
} ) ;
test ( "text(Function) with incoming value" , function ( ) {
expect ( 2 ) ;
2010-12-07 02:37:16 +01:00
2010-01-07 17:51:48 +01:00
var old = "This link has class=\"blog\": Simon Willison's Weblog" ;
2010-12-07 02:37:16 +01:00
2011-04-12 10:47:46 +02:00
jQuery ( "#sap" ) . text ( function ( i , val ) {
2010-01-07 17:51:48 +01:00
equals ( val , old , "Make sure the incoming value is correct." ) ;
return "foobar" ;
} ) ;
2010-12-07 02:37:16 +01:00
2011-04-12 10:47:46 +02:00
equals ( jQuery ( "#sap" ) . text ( ) , "foobar" , "Check for merged text of more then one element." ) ;
2010-12-07 02:37:16 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2010-01-07 17:51:48 +01:00
} ) ;
2009-07-12 23:08:54 +02:00
var testWrap = function ( val ) {
2010-12-19 22:33:53 +01:00
expect ( 19 ) ;
2011-04-12 10:47:46 +02:00
var defaultText = "Try them out:"
var result = jQuery ( "#first" ) . wrap ( val ( "<div class='red'><span></span></div>" ) ) . text ( ) ;
equals ( defaultText , result , "Check for wrapping of on-the-fly html" ) ;
ok ( jQuery ( "#first" ) . parent ( ) . parent ( ) . is ( ".red" ) , "Check if wrapper has class 'red'" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2011-04-12 10:47:46 +02:00
var defaultText = "Try them out:"
var result = jQuery ( "#first" ) . wrap ( val ( document . getElementById ( "empty" ) ) ) . parent ( ) ;
ok ( result . is ( "ol" ) , "Check for element wrapping" ) ;
equals ( result . text ( ) , defaultText , "Check for element wrapping" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2011-04-12 10:47:46 +02:00
jQuery ( "#check1" ) . click ( function ( ) {
2009-03-18 22:15:38 +01:00
var checkbox = this ;
ok ( checkbox . checked , "Checkbox's state is erased after wrap() action, see #769" ) ;
2011-04-12 10:47:46 +02:00
jQuery ( checkbox ) . wrap ( val ( "<div id='c1' style='display:none;'></div>" ) ) ;
2009-03-18 22:15:38 +01:00
ok ( checkbox . checked , "Checkbox's state is erased after wrap() action, see #769" ) ;
} ) . click ( ) ;
// using contents will get comments regular, text, and comment nodes
var j = jQuery ( "#nonnodes" ) . contents ( ) ;
2009-07-12 23:08:54 +02:00
j . wrap ( val ( "<i></i>" ) ) ;
2010-08-26 21:36:44 +02:00
// Blackberry 4.6 doesn't maintain comments in the DOM
equals ( jQuery ( "#nonnodes > i" ) . length , jQuery ( "#nonnodes" ) [ 0 ] . childNodes . length , "Check node,textnode,comment wraps ok" ) ;
2009-11-30 19:46:14 +01:00
equals ( jQuery ( "#nonnodes > i" ) . text ( ) , j . text ( ) , "Check node,textnode,comment wraps doesn't hurt text" ) ;
2009-03-18 22:15:38 +01:00
// Try wrapping a disconnected node
2010-12-19 22:33:53 +01:00
var cacheLength = 0 ;
for ( var i in jQuery . cache ) {
cacheLength ++ ;
}
2009-07-12 23:08:54 +02:00
j = jQuery ( "<label/>" ) . wrap ( val ( "<li/>" ) ) ;
2009-03-18 22:15:38 +01:00
equals ( j [ 0 ] . nodeName . toUpperCase ( ) , "LABEL" , "Element is a label" ) ;
equals ( j [ 0 ] . parentNode . nodeName . toUpperCase ( ) , "LI" , "Element has been wrapped" ) ;
2009-07-15 01:28:07 +02:00
2010-12-19 22:33:53 +01:00
for ( i in jQuery . cache ) {
cacheLength -- ;
}
equals ( cacheLength , 0 , "No memory leak in jQuery.cache (bug #7165)" ) ;
2009-07-15 01:28:07 +02:00
// Wrap an element containing a text node
j = jQuery ( "<span/>" ) . wrap ( "<div>test</div>" ) ;
equals ( j [ 0 ] . previousSibling . nodeType , 3 , "Make sure the previous node is a text element" ) ;
equals ( j [ 0 ] . parentNode . nodeName . toUpperCase ( ) , "DIV" , "And that we're in the div element." ) ;
2009-07-15 01:43:58 +02:00
// Try to wrap an element with multiple elements (should fail)
j = jQuery ( "<div><span></span></div>" ) . children ( ) . wrap ( "<p></p><div></div>" ) ;
equals ( j [ 0 ] . parentNode . parentNode . childNodes . length , 1 , "There should only be one element wrapping." ) ;
equals ( j . length , 1 , "There should only be one element (no cloning)." ) ;
equals ( j [ 0 ] . parentNode . nodeName . toUpperCase ( ) , "P" , "The span should be in the paragraph." ) ;
2009-12-08 20:21:24 +01:00
// Wrap an element with a jQuery set
j = jQuery ( "<span/>" ) . wrap ( jQuery ( "<div></div>" ) ) ;
equals ( j [ 0 ] . parentNode . nodeName . toLowerCase ( ) , "div" , "Wrapping works." ) ;
// Wrap an element with a jQuery set and event
result = jQuery ( "<div></div>" ) . click ( function ( ) {
ok ( true , "Event triggered." ) ;
2011-01-09 22:58:47 +01:00
// Remove handlers on detached elements
result . unbind ( ) ;
jQuery ( this ) . unbind ( ) ;
2009-12-08 20:21:24 +01:00
} ) ;
j = jQuery ( "<span/>" ) . wrap ( result ) ;
equals ( j [ 0 ] . parentNode . nodeName . toLowerCase ( ) , "div" , "Wrapping works." ) ;
j . parent ( ) . trigger ( "click" ) ;
2011-01-09 22:58:47 +01:00
// clean up attached elements
QUnit . reset ( ) ;
2009-07-12 23:08:54 +02:00
}
test ( "wrap(String|Element)" , function ( ) {
testWrap ( bareObj ) ;
2009-03-18 22:15:38 +01:00
} ) ;
2009-07-12 23:08:54 +02:00
test ( "wrap(Function)" , function ( ) {
testWrap ( functionReturningObj ) ;
} )
var testWrapAll = function ( val ) {
2009-03-18 22:15:38 +01:00
expect ( 8 ) ;
var prev = jQuery ( "#firstp" ) [ 0 ] . previousSibling ;
var p = jQuery ( "#firstp,#first" ) [ 0 ] . parentNode ;
2009-07-21 11:17:33 +02:00
2011-04-12 10:47:46 +02:00
var result = jQuery ( "#firstp,#first" ) . wrapAll ( val ( "<div class='red'><div class='tmp'></div></div>" ) ) ;
equals ( result . parent ( ) . length , 1 , "Check for wrapping of on-the-fly html" ) ;
ok ( jQuery ( "#first" ) . parent ( ) . parent ( ) . is ( ".red" ) , "Check if wrapper has class 'red'" ) ;
ok ( jQuery ( "#firstp" ) . parent ( ) . parent ( ) . is ( ".red" ) , "Check if wrapper has class 'red'" ) ;
2009-03-18 22:15:38 +01:00
equals ( jQuery ( "#first" ) . parent ( ) . parent ( ) [ 0 ] . previousSibling , prev , "Correct Previous Sibling" ) ;
equals ( jQuery ( "#first" ) . parent ( ) . parent ( ) [ 0 ] . parentNode , p , "Correct Parent" ) ;
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
var prev = jQuery ( "#firstp" ) [ 0 ] . previousSibling ;
var p = jQuery ( "#first" ) [ 0 ] . parentNode ;
2011-04-12 10:47:46 +02:00
var result = jQuery ( "#firstp,#first" ) . wrapAll ( val ( document . getElementById ( "empty" ) ) ) ;
2009-03-18 22:15:38 +01:00
equals ( jQuery ( "#first" ) . parent ( ) [ 0 ] , jQuery ( "#firstp" ) . parent ( ) [ 0 ] , "Same Parent" ) ;
equals ( jQuery ( "#first" ) . parent ( ) [ 0 ] . previousSibling , prev , "Correct Previous Sibling" ) ;
2009-07-21 11:17:33 +02:00
equals ( jQuery ( "#first" ) . parent ( ) [ 0 ] . parentNode , p , "Correct Parent" ) ;
2009-07-12 23:08:54 +02:00
}
test ( "wrapAll(String|Element)" , function ( ) {
testWrapAll ( bareObj ) ;
2009-03-18 22:15:38 +01:00
} ) ;
2009-07-12 22:19:43 +02:00
var testWrapInner = function ( val ) {
2010-01-26 01:16:23 +01:00
expect ( 11 ) ;
2009-03-18 22:15:38 +01:00
var num = jQuery ( "#first" ) . children ( ) . length ;
2011-04-12 10:47:46 +02:00
var result = jQuery ( "#first" ) . wrapInner ( val ( "<div class='red'><div id='tmp'></div></div>" ) ) ;
2010-01-26 01:16:23 +01:00
equals ( jQuery ( "#first" ) . children ( ) . length , 1 , "Only one child" ) ;
ok ( jQuery ( "#first" ) . children ( ) . is ( ".red" ) , "Verify Right Element" ) ;
equals ( jQuery ( "#first" ) . children ( ) . children ( ) . children ( ) . length , num , "Verify Elements Intact" ) ;
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2010-01-26 01:16:23 +01:00
var num = jQuery ( "#first" ) . html ( "foo<div>test</div><div>test2</div>" ) . children ( ) . length ;
2011-04-12 10:47:46 +02:00
var result = jQuery ( "#first" ) . wrapInner ( val ( "<div class='red'><div id='tmp'></div></div>" ) ) ;
2009-03-18 22:15:38 +01:00
equals ( jQuery ( "#first" ) . children ( ) . length , 1 , "Only one child" ) ;
ok ( jQuery ( "#first" ) . children ( ) . is ( ".red" ) , "Verify Right Element" ) ;
equals ( jQuery ( "#first" ) . children ( ) . children ( ) . children ( ) . length , num , "Verify Elements Intact" ) ;
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
var num = jQuery ( "#first" ) . children ( ) . length ;
2011-04-12 10:47:46 +02:00
var result = jQuery ( "#first" ) . wrapInner ( val ( document . getElementById ( "empty" ) ) ) ;
2009-03-18 22:15:38 +01:00
equals ( jQuery ( "#first" ) . children ( ) . length , 1 , "Only one child" ) ;
ok ( jQuery ( "#first" ) . children ( ) . is ( "#empty" ) , "Verify Right Element" ) ;
2009-07-21 11:17:33 +02:00
equals ( jQuery ( "#first" ) . children ( ) . children ( ) . length , num , "Verify Elements Intact" ) ;
2010-01-11 22:31:31 +01:00
var div = jQuery ( "<div/>" ) ;
2010-01-26 01:16:23 +01:00
div . wrapInner ( val ( "<span></span>" ) ) ;
2010-01-11 22:31:31 +01:00
equals ( div . children ( ) . length , 1 , "The contents were wrapped." ) ;
equals ( div . children ( ) [ 0 ] . nodeName . toLowerCase ( ) , "span" , "A span was inserted." ) ;
2009-07-12 22:19:43 +02:00
}
test ( "wrapInner(String|Element)" , function ( ) {
testWrapInner ( bareObj ) ;
2009-03-18 22:15:38 +01:00
} ) ;
2010-01-26 01:16:23 +01:00
test ( "wrapInner(Function)" , function ( ) {
testWrapInner ( functionReturningObj )
} ) ;
2009-07-12 22:19:43 +02:00
2010-01-07 17:51:48 +01:00
test ( "unwrap()" , function ( ) {
2009-09-25 23:41:21 +02:00
expect ( 9 ) ;
2011-04-12 10:47:46 +02:00
jQuery ( "body" ) . append ( " <div id='unwrap' style='display: none;'> <div id='unwrap1'> <span class='unwrap'>a</span> <span class='unwrap'>b</span> </div> <div id='unwrap2'> <span class='unwrap'>c</span> <span class='unwrap'>d</span> </div> <div id='unwrap3'> <b><span class='unwrap unwrap3'>e</span></b> <b><span class='unwrap unwrap3'>f</span></b> </div> </div>" ) ;
2009-09-25 23:41:21 +02:00
2011-04-12 10:47:46 +02:00
var abcd = jQuery ( "#unwrap1 > span, #unwrap2 > span" ) . get ( ) ,
abcdef = jQuery ( "#unwrap span" ) . get ( ) ;
2009-09-25 23:41:21 +02:00
2011-04-12 10:47:46 +02:00
equals ( jQuery ( "#unwrap1 span" ) . add ( "#unwrap2 span:first" ) . unwrap ( ) . length , 3 , "make #unwrap1 and #unwrap2 go away" ) ;
same ( jQuery ( "#unwrap > span" ) . get ( ) , abcd , "all four spans should still exist" ) ;
2009-09-25 23:41:21 +02:00
2011-04-12 10:47:46 +02:00
same ( jQuery ( "#unwrap3 span" ) . unwrap ( ) . get ( ) , jQuery ( "#unwrap3 > span" ) . get ( ) , "make all b in #unwrap3 go away" ) ;
2009-09-25 23:41:21 +02:00
2011-04-12 10:47:46 +02:00
same ( jQuery ( "#unwrap3 span" ) . unwrap ( ) . get ( ) , jQuery ( "#unwrap > span.unwrap3" ) . get ( ) , "make #unwrap3 go away" ) ;
2009-09-25 23:41:21 +02:00
2011-04-12 10:47:46 +02:00
same ( jQuery ( "#unwrap" ) . children ( ) . get ( ) , abcdef , "#unwrap only contains 6 child spans" ) ;
2009-09-25 23:41:21 +02:00
2011-04-12 10:47:46 +02:00
same ( jQuery ( "#unwrap > span" ) . unwrap ( ) . get ( ) , jQuery ( "body > span.unwrap" ) . get ( ) , "make the 6 spans become children of body" ) ;
2009-09-25 23:41:21 +02:00
2011-04-12 10:47:46 +02:00
same ( jQuery ( "body > span.unwrap" ) . unwrap ( ) . get ( ) , jQuery ( "body > span.unwrap" ) . get ( ) , "can't unwrap children of body" ) ;
same ( jQuery ( "body > span.unwrap" ) . unwrap ( ) . get ( ) , abcdef , "can't unwrap children of body" ) ;
2009-09-25 23:41:21 +02:00
2011-04-12 10:47:46 +02:00
same ( jQuery ( "body > span.unwrap" ) . get ( ) , abcdef , "body contains 6 .unwrap child spans" ) ;
2009-09-25 23:41:21 +02:00
2011-04-12 10:47:46 +02:00
jQuery ( "body > span.unwrap" ) . remove ( ) ;
2009-09-25 23:41:21 +02:00
} ) ;
2009-07-12 22:19:43 +02:00
var testAppend = function ( valueObj ) {
2011-05-03 21:02:26 +02:00
expect ( 41 ) ;
2011-04-12 10:47:46 +02:00
var defaultText = "Try them out:"
var result = jQuery ( "#first" ) . append ( valueObj ( "<b>buga</b>" ) ) ;
equals ( result . text ( ) , defaultText + "buga" , "Check if text appending works" ) ;
equals ( jQuery ( "#select3" ) . append ( valueObj ( "<option value='appendTest'>Append Test</option>" ) ) . find ( "option:last-child" ) . attr ( "value" ) , "appendTest" , "Appending html options to select element" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
var expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:" ;
2011-04-12 10:47:46 +02:00
jQuery ( "#sap" ) . append ( valueObj ( document . getElementById ( "first" ) ) ) ;
equals ( jQuery ( "#sap" ) . text ( ) , expected , "Check for appending of element" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:Yahoo" ;
2011-04-12 10:47:46 +02:00
jQuery ( "#sap" ) . append ( valueObj ( [ document . getElementById ( "first" ) , document . getElementById ( "yahoo" ) ] ) ) ;
equals ( jQuery ( "#sap" ) . text ( ) , expected , "Check for appending of array of elements" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
expected = "This link has class=\"blog\": Simon Willison's WeblogYahooTry them out:" ;
2011-04-12 10:47:46 +02:00
jQuery ( "#sap" ) . append ( valueObj ( jQuery ( "#yahoo, #first" ) ) ) ;
equals ( jQuery ( "#sap" ) . text ( ) , expected , "Check for appending of jQuery object" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-07-12 22:19:43 +02:00
jQuery ( "#sap" ) . append ( valueObj ( 5 ) ) ;
2009-03-18 22:15:38 +01:00
ok ( jQuery ( "#sap" ) [ 0 ] . innerHTML . match ( /5$/ ) , "Check for appending a number" ) ;
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-07-12 22:19:43 +02:00
jQuery ( "#sap" ) . append ( valueObj ( " text with spaces " ) ) ;
2009-03-18 22:15:38 +01:00
ok ( jQuery ( "#sap" ) [ 0 ] . innerHTML . match ( / text with spaces $/ ) , "Check for appending text with spaces" ) ;
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-07-12 22:19:43 +02:00
ok ( jQuery ( "#sap" ) . append ( valueObj ( [ ] ) ) , "Check for appending an empty array." ) ;
ok ( jQuery ( "#sap" ) . append ( valueObj ( "" ) ) , "Check for appending an empty string." ) ;
ok ( jQuery ( "#sap" ) . append ( valueObj ( document . getElementsByTagName ( "foo" ) ) ) , "Check for appending an empty nodelist." ) ;
2010-12-07 02:37:16 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2011-04-12 10:47:46 +02:00
jQuery ( "form" ) . append ( valueObj ( "<input name='radiotest' type='radio' checked='checked' />" ) ) ;
2010-01-26 00:43:33 +01:00
jQuery ( "form input[name=radiotest]" ) . each ( function ( ) {
2011-04-12 10:47:46 +02:00
ok ( jQuery ( this ) . is ( ":checked" ) , "Append checked radio" ) ;
2010-01-26 00:43:33 +01:00
} ) . remove ( ) ;
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2011-04-12 10:47:46 +02:00
jQuery ( "form" ) . append ( valueObj ( "<input name='radiotest' type='radio' checked = 'checked' />" ) ) ;
2010-01-26 00:43:33 +01:00
jQuery ( "form input[name=radiotest]" ) . each ( function ( ) {
2011-04-12 10:47:46 +02:00
ok ( jQuery ( this ) . is ( ":checked" ) , "Append alternately formated checked radio" ) ;
2010-01-26 00:43:33 +01:00
} ) . remove ( ) ;
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2011-04-12 10:47:46 +02:00
jQuery ( "form" ) . append ( valueObj ( "<input name='radiotest' type='radio' checked />" ) ) ;
2010-01-26 00:43:33 +01:00
jQuery ( "form input[name=radiotest]" ) . each ( function ( ) {
2011-04-12 10:47:46 +02:00
ok ( jQuery ( this ) . is ( ":checked" ) , "Append HTML5-formated checked radio" ) ;
2010-01-26 00:43:33 +01:00
} ) . remove ( ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2011-04-12 10:47:46 +02:00
jQuery ( "#sap" ) . append ( valueObj ( document . getElementById ( "form" ) ) ) ;
2009-03-18 22:15:38 +01:00
equals ( jQuery ( "#sap>form" ) . size ( ) , 1 , "Check for appending a form" ) ; // Bug #910
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
var pass = true ;
try {
2010-08-26 20:57:23 +02:00
var body = jQuery ( "#iframe" ) [ 0 ] . contentWindow . document . body ;
2009-03-18 22:15:38 +01:00
pass = false ;
2010-08-26 21:26:30 +02:00
jQuery ( body ) . append ( valueObj ( "<div>test</div>" ) ) ;
2010-08-26 20:57:23 +02:00
pass = true ;
} catch ( e ) { }
2009-03-18 22:15:38 +01:00
ok ( pass , "Test for appending a DOM node to the contents of an IFrame" ) ;
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2011-04-12 10:47:46 +02:00
jQuery ( "<fieldset/>" ) . appendTo ( "#form" ) . append ( valueObj ( "<legend id='legend'>test</legend>" ) ) ;
t ( "Append legend" , "#legend" , [ "legend" ] ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2011-04-12 10:47:46 +02:00
jQuery ( "#select1" ) . append ( valueObj ( "<OPTION>Test</OPTION>" ) ) ;
equals ( jQuery ( "#select1 option:last" ) . text ( ) , "Test" , "Appending <OPTION> (all caps)" ) ;
2009-03-18 22:15:38 +01:00
2011-04-12 10:47:46 +02:00
jQuery ( "#table" ) . append ( valueObj ( "<colgroup></colgroup>" ) ) ;
ok ( jQuery ( "#table colgroup" ) . length , "Append colgroup" ) ;
2009-03-18 22:15:38 +01:00
2011-04-12 10:47:46 +02:00
jQuery ( "#table colgroup" ) . append ( valueObj ( "<col/>" ) ) ;
ok ( jQuery ( "#table colgroup col" ) . length , "Append col" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2011-04-12 10:47:46 +02:00
jQuery ( "#table" ) . append ( valueObj ( "<caption></caption>" ) ) ;
ok ( jQuery ( "#table caption" ) . length , "Append caption" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2011-04-12 10:47:46 +02:00
jQuery ( "form:last" )
. append ( valueObj ( "<select id='appendSelect1'></select>" ) )
. append ( valueObj ( "<select id='appendSelect2'><option>Test</option></select>" ) ) ;
2009-03-18 22:15:38 +01:00
t ( "Append Select" , "#appendSelect1, #appendSelect2" , [ "appendSelect1" , "appendSelect2" ] ) ;
2011-04-12 10:47:46 +02:00
equals ( "Two nodes" , jQuery ( "<div />" ) . append ( "Two" , " nodes" ) . text ( ) , "Appending two text nodes (#4011)" ) ;
2009-12-06 02:06:00 +01:00
2009-03-18 22:15:38 +01:00
// using contents will get comments regular, text, and comment nodes
var j = jQuery ( "#nonnodes" ) . contents ( ) ;
var d = jQuery ( "<div/>" ) . appendTo ( "#nonnodes" ) . append ( j ) ;
equals ( jQuery ( "#nonnodes" ) . length , 1 , "Check node,textnode,comment append moved leaving just the div" ) ;
ok ( d . contents ( ) . length >= 2 , "Check node,textnode,comment append works" ) ;
d . contents ( ) . appendTo ( "#nonnodes" ) ;
d . remove ( ) ;
ok ( jQuery ( "#nonnodes" ) . contents ( ) . length >= 2 , "Check node,textnode,comment append cleanup worked" ) ;
2011-04-22 03:51:23 +02:00
QUnit . reset ( ) ;
var $input = jQuery ( "<input />" ) . attr ( { "type" : "checkbox" , "checked" : true } ) . appendTo ( '#testForm' ) ;
equals ( $input [ 0 ] . checked , true , "A checked checkbox that is appended stays checked" ) ;
QUnit . reset ( ) ;
var $radios = jQuery ( "input:radio[name='R1']" ) ,
$radioNot = jQuery ( "<input type='radio' name='R1' checked='checked'/>" ) . insertAfter ( $radios ) ,
$radio = $radios . eq ( 1 ) . click ( ) ;
$radioNot [ 0 ] . checked = false ;
$radios . parent ( ) . wrap ( "<div></div>" ) ;
equals ( $radio [ 0 ] . checked , true , "Reappending radios uphold which radio is checked" ) ;
equals ( $radioNot [ 0 ] . checked , false , "Reappending radios uphold not being checked" ) ;
QUnit . reset ( ) ;
2011-05-03 21:02:26 +02:00
var prev = jQuery ( "#sap" ) . children ( ) . length ;
jQuery ( "#sap" ) . append (
"<span></span>" ,
"<span></span>" ,
"<span></span>"
) ;
equals ( jQuery ( "#sap" ) . children ( ) . length , prev + 3 , "Make sure that multiple arguments works." ) ;
QUnit . reset ( ) ;
2009-07-12 22:19:43 +02:00
}
test ( "append(String|Element|Array<Element>|jQuery)" , function ( ) {
2009-12-10 06:15:49 +01:00
testAppend ( bareObj ) ;
2009-03-18 22:15:38 +01:00
} ) ;
2009-07-12 22:19:43 +02:00
test ( "append(Function)" , function ( ) {
testAppend ( functionReturningObj ) ;
2010-01-07 19:34:16 +01:00
} ) ;
test ( "append(Function) with incoming value" , function ( ) {
expect ( 12 ) ;
2010-12-07 02:37:16 +01:00
2011-04-12 10:47:46 +02:00
var defaultText = "Try them out:" , old = jQuery ( "#first" ) . html ( ) ;
2010-12-07 02:37:16 +01:00
2011-04-12 10:47:46 +02:00
var result = jQuery ( "#first" ) . append ( function ( i , val ) {
2010-01-07 19:34:16 +01:00
equals ( val , old , "Make sure the incoming value is correct." ) ;
2011-04-12 10:47:46 +02:00
return "<b>buga</b>" ;
2010-01-07 19:34:16 +01:00
} ) ;
2011-04-12 10:47:46 +02:00
equals ( result . text ( ) , defaultText + "buga" , "Check if text appending works" ) ;
2010-12-07 02:37:16 +01:00
2011-04-12 10:47:46 +02:00
var select = jQuery ( "#select3" ) ;
2010-01-07 19:34:16 +01:00
old = select . html ( ) ;
2010-12-07 02:37:16 +01:00
2010-01-07 19:34:16 +01:00
equals ( select . append ( function ( i , val ) {
equals ( val , old , "Make sure the incoming value is correct." ) ;
2011-04-12 10:47:46 +02:00
return "<option value='appendTest'>Append Test</option>" ;
} ) . find ( "option:last-child" ) . attr ( "value" ) , "appendTest" , "Appending html options to select element" ) ;
2010-01-07 19:34:16 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2010-01-07 19:34:16 +01:00
var expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:" ;
old = jQuery ( "#sap" ) . html ( ) ;
2010-12-07 02:37:16 +01:00
2011-04-12 10:47:46 +02:00
jQuery ( "#sap" ) . append ( function ( i , val ) {
2010-01-07 19:34:16 +01:00
equals ( val , old , "Make sure the incoming value is correct." ) ;
2011-04-12 10:47:46 +02:00
return document . getElementById ( "first" ) ;
2010-01-07 19:34:16 +01:00
} ) ;
2011-04-12 10:47:46 +02:00
equals ( jQuery ( "#sap" ) . text ( ) , expected , "Check for appending of element" ) ;
2010-01-07 19:34:16 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2010-01-07 19:34:16 +01:00
expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:Yahoo" ;
old = jQuery ( "#sap" ) . html ( ) ;
2010-12-07 02:37:16 +01:00
2011-04-12 10:47:46 +02:00
jQuery ( "#sap" ) . append ( function ( i , val ) {
2010-01-07 19:34:16 +01:00
equals ( val , old , "Make sure the incoming value is correct." ) ;
2011-04-12 10:47:46 +02:00
return [ document . getElementById ( "first" ) , document . getElementById ( "yahoo" ) ] ;
2010-01-07 19:34:16 +01:00
} ) ;
2011-04-12 10:47:46 +02:00
equals ( jQuery ( "#sap" ) . text ( ) , expected , "Check for appending of array of elements" ) ;
2010-01-07 19:34:16 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2010-01-07 19:34:16 +01:00
expected = "This link has class=\"blog\": Simon Willison's WeblogYahooTry them out:" ;
old = jQuery ( "#sap" ) . html ( ) ;
2010-12-07 02:37:16 +01:00
2011-04-12 10:47:46 +02:00
jQuery ( "#sap" ) . append ( function ( i , val ) {
2010-01-07 19:34:16 +01:00
equals ( val , old , "Make sure the incoming value is correct." ) ;
2010-08-26 20:57:23 +02:00
return jQuery ( "#yahoo, #first" ) ;
2010-01-07 19:34:16 +01:00
} ) ;
2011-04-12 10:47:46 +02:00
equals ( jQuery ( "#sap" ) . text ( ) , expected , "Check for appending of jQuery object" ) ;
2010-01-07 19:34:16 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2010-01-07 19:34:16 +01:00
old = jQuery ( "#sap" ) . html ( ) ;
2010-12-07 02:37:16 +01:00
2010-01-07 19:34:16 +01:00
jQuery ( "#sap" ) . append ( function ( i , val ) {
equals ( val , old , "Make sure the incoming value is correct." ) ;
return 5 ;
} ) ;
2010-12-07 02:37:16 +01:00
ok ( jQuery ( "#sap" ) [ 0 ] . innerHTML . match ( /5$/ ) , "Check for appending a number" ) ;
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2010-01-07 19:34:16 +01:00
} ) ;
2009-07-12 22:19:43 +02:00
2010-12-07 02:37:16 +01:00
test ( "append the same fragment with events (Bug #6997, 5566)" , function ( ) {
2011-02-23 19:18:44 +01:00
var doExtra = ! jQuery . support . noCloneEvent && document . fireEvent ;
expect ( 2 + ( doExtra ? 1 : 0 ) ) ;
2010-12-07 02:37:16 +01:00
stop ( 1000 ) ;
2010-12-12 09:20:31 +01:00
var element ;
// This patch modified the way that cloning occurs in IE; we need to make sure that
2010-12-12 20:37:00 +01:00
// native event handlers on the original object don't get disturbed when they are
2010-12-12 09:20:31 +01:00
// modified on the clone
2011-02-23 19:18:44 +01:00
if ( doExtra ) {
2010-12-12 09:20:31 +01:00
element = jQuery ( "div:first" ) . click ( function ( ) {
ok ( true , "Event exists on original after being unbound on clone" ) ;
2011-04-12 10:47:46 +02:00
jQuery ( this ) . unbind ( "click" ) ;
2010-12-12 09:20:31 +01:00
} ) ;
2011-04-12 10:47:46 +02:00
var clone = element . clone ( true ) . unbind ( "click" ) ;
clone [ 0 ] . fireEvent ( "onclick" ) ;
element [ 0 ] . fireEvent ( "onclick" ) ;
2011-01-09 22:58:47 +01:00
// manually clean up detached elements
clone . remove ( ) ;
2010-12-12 09:20:31 +01:00
}
element = jQuery ( "<a class='test6997'></a>" ) . click ( function ( ) {
2010-12-07 02:37:16 +01:00
ok ( true , "Append second element events work" ) ;
} ) ;
jQuery ( "#listWithTabIndex li" ) . append ( element )
2011-04-12 10:47:46 +02:00
. find ( "a.test6997" ) . eq ( 1 ) . click ( ) ;
2010-12-07 02:37:16 +01:00
element = jQuery ( "<li class='test6997'></li>" ) . click ( function ( ) {
ok ( true , "Before second element events work" ) ;
start ( ) ;
} ) ;
jQuery ( "#listWithTabIndex li" ) . before ( element ) ;
jQuery ( "#listWithTabIndex li.test6997" ) . eq ( 1 ) . click ( ) ;
} ) ;
2011-05-26 02:48:59 +02:00
test ( "append(xml)" , function ( ) {
expect ( 1 ) ;
function createXMLDoc ( ) {
// Initialize DOM based upon latest installed MSXML or Netscape
var elem ,
aActiveX =
[ "MSXML6.DomDocument" ,
"MSXML3.DomDocument" ,
"MSXML2.DomDocument" ,
"MSXML.DomDocument" ,
"Microsoft.XmlDom" ] ;
if ( document . implementation && "createDocument" in document . implementation ) {
return document . implementation . createDocument ( "" , "" , null ) ;
} else {
// IE
for ( var n = 0 , len = aActiveX . length ; n < len ; n ++ ) {
try {
elem = new ActiveXObject ( aActiveX [ n ] ) ;
return elem ;
} catch ( _ ) { } ;
}
}
}
var xmlDoc = createXMLDoc ( ) ,
xml1 = xmlDoc . createElement ( "head" ) ,
xml2 = xmlDoc . createElement ( "test" ) ;
ok ( jQuery ( xml1 ) . append ( xml2 ) , "Append an xml element to another without raising an exception." ) ;
} ) ;
2009-03-18 22:15:38 +01:00
test ( "appendTo(String|Element|Array<Element>|jQuery)" , function ( ) {
2010-03-05 06:07:57 +01:00
expect ( 16 ) ;
2010-02-13 09:14:00 +01:00
2011-04-12 10:47:46 +02:00
var defaultText = "Try them out:"
jQuery ( "<b>buga</b>" ) . appendTo ( "#first" ) ;
equals ( jQuery ( "#first" ) . text ( ) , defaultText + "buga" , "Check if text appending works" ) ;
equals ( jQuery ( "<option value='appendTest'>Append Test</option>" ) . appendTo ( "#select3" ) . parent ( ) . find ( "option:last-child" ) . attr ( "value" ) , "appendTest" , "Appending html options to select element" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2010-03-05 06:14:47 +01:00
var l = jQuery ( "#first" ) . children ( ) . length + 2 ;
jQuery ( "<strong>test</strong>" ) ;
jQuery ( "<strong>test</strong>" ) ;
jQuery ( [ jQuery ( "<strong>test</strong>" ) [ 0 ] , jQuery ( "<strong>test</strong>" ) [ 0 ] ] )
. appendTo ( "#first" ) ;
2010-03-05 06:07:57 +01:00
equals ( jQuery ( "#first" ) . children ( ) . length , l , "Make sure the elements were inserted." ) ;
2010-03-05 06:14:47 +01:00
equals ( jQuery ( "#first" ) . children ( ) . last ( ) [ 0 ] . nodeName . toLowerCase ( ) , "strong" , "Verify the last element." ) ;
2010-03-05 06:07:57 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
var expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:" ;
2011-04-12 10:47:46 +02:00
jQuery ( document . getElementById ( "first" ) ) . appendTo ( "#sap" ) ;
equals ( jQuery ( "#sap" ) . text ( ) , expected , "Check for appending of element" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:Yahoo" ;
2011-04-12 10:47:46 +02:00
jQuery ( [ document . getElementById ( "first" ) , document . getElementById ( "yahoo" ) ] ) . appendTo ( "#sap" ) ;
equals ( jQuery ( "#sap" ) . text ( ) , expected , "Check for appending of array of elements" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
ok ( jQuery ( document . createElement ( "script" ) ) . appendTo ( "body" ) . length , "Make sure a disconnected script can be appended." ) ;
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
expected = "This link has class=\"blog\": Simon Willison's WeblogYahooTry them out:" ;
2011-04-12 10:47:46 +02:00
jQuery ( "#yahoo, #first" ) . appendTo ( "#sap" ) ;
equals ( jQuery ( "#sap" ) . text ( ) , expected , "Check for appending of jQuery object" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2011-04-12 10:47:46 +02:00
jQuery ( "#select1" ) . appendTo ( "#foo" ) ;
t ( "Append select" , "#foo select" , [ "select1" ] ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
var div = jQuery ( "<div/>" ) . click ( function ( ) {
ok ( true , "Running a cloned click." ) ;
} ) ;
2011-04-17 08:43:57 +02:00
div . appendTo ( "#qunit-fixture, #moretests" ) ;
2009-03-18 22:15:38 +01:00
2011-04-17 08:43:57 +02:00
jQuery ( "#qunit-fixture div:last" ) . click ( ) ;
2009-03-18 22:15:38 +01:00
jQuery ( "#moretests div:last" ) . click ( ) ;
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2011-04-17 08:43:57 +02:00
var div = jQuery ( "<div/>" ) . appendTo ( "#qunit-fixture, #moretests" ) ;
2009-03-18 22:15:38 +01:00
equals ( div . length , 2 , "appendTo returns the inserted elements" ) ;
2009-07-21 11:17:33 +02:00
2009-03-18 22:15:38 +01:00
div . addClass ( "test" ) ;
2011-04-17 08:43:57 +02:00
ok ( jQuery ( "#qunit-fixture div:last" ) . hasClass ( "test" ) , "appendTo element was modified after the insertion" ) ;
2009-03-18 22:15:38 +01:00
ok ( jQuery ( "#moretests div:last" ) . hasClass ( "test" ) , "appendTo element was modified after the insertion" ) ;
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2010-02-13 08:49:04 +01:00
div = jQuery ( "<div/>" ) ;
jQuery ( "<span>a</span><b>b</b>" ) . filter ( "span" ) . appendTo ( div ) ;
equals ( div . children ( ) . length , 1 , "Make sure the right number of children were inserted." ) ;
2010-02-13 09:14:00 +01:00
div = jQuery ( "#moretests div" ) ;
2011-04-17 08:43:57 +02:00
var num = jQuery ( "#qunit-fixture div" ) . length ;
div . remove ( ) . appendTo ( "#qunit-fixture" ) ;
2010-02-13 09:14:00 +01:00
2011-04-17 08:43:57 +02:00
equals ( jQuery ( "#qunit-fixture div" ) . length , num , "Make sure all the removed divs were inserted." ) ;
2010-02-13 09:14:00 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
} ) ;
2009-07-12 22:19:43 +02:00
var testPrepend = function ( val ) {
2009-03-18 22:15:38 +01:00
expect ( 5 ) ;
2011-04-12 10:47:46 +02:00
var defaultText = "Try them out:"
var result = jQuery ( "#first" ) . prepend ( val ( "<b>buga</b>" ) ) ;
equals ( result . text ( ) , "buga" + defaultText , "Check if text prepending works" ) ;
equals ( jQuery ( "#select3" ) . prepend ( val ( "<option value='prependTest'>Prepend Test</option>" ) ) . find ( "option:first-child" ) . attr ( "value" ) , "prependTest" , "Prepending html options to select element" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
var expected = "Try them out:This link has class=\"blog\": Simon Willison's Weblog" ;
2011-04-12 10:47:46 +02:00
jQuery ( "#sap" ) . prepend ( val ( document . getElementById ( "first" ) ) ) ;
equals ( jQuery ( "#sap" ) . text ( ) , expected , "Check for prepending of element" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
expected = "Try them out:YahooThis link has class=\"blog\": Simon Willison's Weblog" ;
2011-04-12 10:47:46 +02:00
jQuery ( "#sap" ) . prepend ( val ( [ document . getElementById ( "first" ) , document . getElementById ( "yahoo" ) ] ) ) ;
equals ( jQuery ( "#sap" ) . text ( ) , expected , "Check for prepending of array of elements" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
expected = "YahooTry them out:This link has class=\"blog\": Simon Willison's Weblog" ;
2011-04-12 10:47:46 +02:00
jQuery ( "#sap" ) . prepend ( val ( jQuery ( "#yahoo, #first" ) ) ) ;
equals ( jQuery ( "#sap" ) . text ( ) , expected , "Check for prepending of jQuery object" ) ;
2010-01-07 19:34:16 +01:00
} ;
2009-07-12 22:19:43 +02:00
test ( "prepend(String|Element|Array<Element>|jQuery)" , function ( ) {
testPrepend ( bareObj ) ;
2009-03-18 22:15:38 +01:00
} ) ;
2009-07-12 22:19:43 +02:00
test ( "prepend(Function)" , function ( ) {
testPrepend ( functionReturningObj ) ;
2010-01-07 19:34:16 +01:00
} ) ;
test ( "prepend(Function) with incoming value" , function ( ) {
expect ( 10 ) ;
2010-12-07 02:37:16 +01:00
2011-04-12 10:47:46 +02:00
var defaultText = "Try them out:" , old = jQuery ( "#first" ) . html ( ) ;
var result = jQuery ( "#first" ) . prepend ( function ( i , val ) {
2010-01-07 19:34:16 +01:00
equals ( val , old , "Make sure the incoming value is correct." ) ;
2011-04-12 10:47:46 +02:00
return "<b>buga</b>" ;
2010-01-07 19:34:16 +01:00
} ) ;
2011-04-12 10:47:46 +02:00
equals ( result . text ( ) , "buga" + defaultText , "Check if text prepending works" ) ;
2010-12-07 02:37:16 +01:00
2010-01-07 19:34:16 +01:00
old = jQuery ( "#select3" ) . html ( ) ;
2010-12-07 02:37:16 +01:00
2011-04-12 10:47:46 +02:00
equals ( jQuery ( "#select3" ) . prepend ( function ( i , val ) {
2010-01-07 19:34:16 +01:00
equals ( val , old , "Make sure the incoming value is correct." ) ;
2011-04-12 10:47:46 +02:00
return "<option value='prependTest'>Prepend Test</option>" ;
} ) . find ( "option:first-child" ) . attr ( "value" ) , "prependTest" , "Prepending html options to select element" ) ;
2010-01-07 19:34:16 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2010-01-07 19:34:16 +01:00
var expected = "Try them out:This link has class=\"blog\": Simon Willison's Weblog" ;
2011-04-12 10:47:46 +02:00
old = jQuery ( "#sap" ) . html ( ) ;
2010-12-07 02:37:16 +01:00
2011-04-12 10:47:46 +02:00
jQuery ( "#sap" ) . prepend ( function ( i , val ) {
2010-01-07 19:34:16 +01:00
equals ( val , old , "Make sure the incoming value is correct." ) ;
2011-04-12 10:47:46 +02:00
return document . getElementById ( "first" ) ;
2010-01-07 19:34:16 +01:00
} ) ;
2010-12-07 02:37:16 +01:00
2011-04-12 10:47:46 +02:00
equals ( jQuery ( "#sap" ) . text ( ) , expected , "Check for prepending of element" ) ;
2010-01-07 19:34:16 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2010-01-07 19:34:16 +01:00
expected = "Try them out:YahooThis link has class=\"blog\": Simon Willison's Weblog" ;
2011-04-12 10:47:46 +02:00
old = jQuery ( "#sap" ) . html ( ) ;
2010-12-07 02:37:16 +01:00
2011-04-12 10:47:46 +02:00
jQuery ( "#sap" ) . prepend ( function ( i , val ) {
2010-01-07 19:34:16 +01:00
equals ( val , old , "Make sure the incoming value is correct." ) ;
2011-04-12 10:47:46 +02:00
return [ document . getElementById ( "first" ) , document . getElementById ( "yahoo" ) ] ;
2010-01-07 19:34:16 +01:00
} ) ;
2010-12-07 02:37:16 +01:00
2011-04-12 10:47:46 +02:00
equals ( jQuery ( "#sap" ) . text ( ) , expected , "Check for prepending of array of elements" ) ;
2010-01-07 19:34:16 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2010-01-07 19:34:16 +01:00
expected = "YahooTry them out:This link has class=\"blog\": Simon Willison's Weblog" ;
2011-04-12 10:47:46 +02:00
old = jQuery ( "#sap" ) . html ( ) ;
2010-12-07 02:37:16 +01:00
2011-04-12 10:47:46 +02:00
jQuery ( "#sap" ) . prepend ( function ( i , val ) {
2010-01-07 19:34:16 +01:00
equals ( val , old , "Make sure the incoming value is correct." ) ;
2010-08-26 20:57:23 +02:00
return jQuery ( "#yahoo, #first" ) ;
2010-01-07 19:34:16 +01:00
} ) ;
2010-12-07 02:37:16 +01:00
2011-04-12 10:47:46 +02:00
equals ( jQuery ( "#sap" ) . text ( ) , expected , "Check for prepending of jQuery object" ) ;
2010-01-07 19:34:16 +01:00
} ) ;
2009-07-12 22:19:43 +02:00
2009-03-18 22:15:38 +01:00
test ( "prependTo(String|Element|Array<Element>|jQuery)" , function ( ) {
expect ( 6 ) ;
2011-04-12 10:47:46 +02:00
var defaultText = "Try them out:"
jQuery ( "<b>buga</b>" ) . prependTo ( "#first" ) ;
equals ( jQuery ( "#first" ) . text ( ) , "buga" + defaultText , "Check if text prepending works" ) ;
equals ( jQuery ( "<option value='prependTest'>Prepend Test</option>" ) . prependTo ( "#select3" ) . parent ( ) . find ( "option:first-child" ) . attr ( "value" ) , "prependTest" , "Prepending html options to select element" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
var expected = "Try them out:This link has class=\"blog\": Simon Willison's Weblog" ;
2011-04-12 10:47:46 +02:00
jQuery ( document . getElementById ( "first" ) ) . prependTo ( "#sap" ) ;
equals ( jQuery ( "#sap" ) . text ( ) , expected , "Check for prepending of element" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
expected = "Try them out:YahooThis link has class=\"blog\": Simon Willison's Weblog" ;
2011-04-12 10:47:46 +02:00
jQuery ( [ document . getElementById ( "first" ) , document . getElementById ( "yahoo" ) ] ) . prependTo ( "#sap" ) ;
equals ( jQuery ( "#sap" ) . text ( ) , expected , "Check for prepending of array of elements" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
expected = "YahooTry them out:This link has class=\"blog\": Simon Willison's Weblog" ;
2011-04-12 10:47:46 +02:00
jQuery ( "#yahoo, #first" ) . prependTo ( "#sap" ) ;
equals ( jQuery ( "#sap" ) . text ( ) , expected , "Check for prepending of jQuery object" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2011-04-12 10:47:46 +02:00
jQuery ( "<select id='prependSelect1'></select>" ) . prependTo ( "form:last" ) ;
jQuery ( "<select id='prependSelect2'><option>Test</option></select>" ) . prependTo ( "form:last" ) ;
2009-03-18 22:15:38 +01:00
t ( "Prepend Select" , "#prependSelect2, #prependSelect1" , [ "prependSelect2" , "prependSelect1" ] ) ;
} ) ;
2009-07-12 22:19:43 +02:00
var testBefore = function ( val ) {
2009-09-15 00:09:42 +02:00
expect ( 6 ) ;
2011-04-12 10:47:46 +02:00
var expected = "This is a normal link: bugaYahoo" ;
jQuery ( "#yahoo" ) . before ( val ( "<b>buga</b>" ) ) ;
equals ( jQuery ( "#en" ) . text ( ) , expected , "Insert String before" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
expected = "This is a normal link: Try them out:Yahoo" ;
2011-04-12 10:47:46 +02:00
jQuery ( "#yahoo" ) . before ( val ( document . getElementById ( "first" ) ) ) ;
equals ( jQuery ( "#en" ) . text ( ) , expected , "Insert element before" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
expected = "This is a normal link: Try them out:diveintomarkYahoo" ;
2011-04-12 10:47:46 +02:00
jQuery ( "#yahoo" ) . before ( val ( [ document . getElementById ( "first" ) , document . getElementById ( "mark" ) ] ) ) ;
equals ( jQuery ( "#en" ) . text ( ) , expected , "Insert array of elements before" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
expected = "This is a normal link: diveintomarkTry them out:Yahoo" ;
2011-04-12 10:47:46 +02:00
jQuery ( "#yahoo" ) . before ( val ( jQuery ( "#mark, #first" ) ) ) ;
equals ( jQuery ( "#en" ) . text ( ) , expected , "Insert jQuery before" ) ;
2009-09-15 00:09:42 +02:00
A follow-up to [6578] (which stopped adding expandos to elements that didn't have data). That broke jQuery.unique() (so we're now using the unique from Sizzle). Using Sizzle's unique (which also sorts in document order) changed how add, andSelf, parents, nextAll, prevAll, and siblings work. after and before were changed to not use .add() (in order to guarantee their position in the jQuery set). Also, jQuery.data(elem) was updated to return that element's data object (instead of its ID).
$("<div/>").after("<span/>")
=> [ div, span ]
(calling after on a disconnected DOM node adds the nodes to the end of the jQuery set)
$("<div/>").before("<span/>")
=> [ span, div ]
(calling before on a disconnected DOM node adds the nodes to the beginning of the jQuery set)
$("div").add("span")
=> [ div, span, span, div, span ]
(results now come out in document order)
$("div").find("code").andSelf();
=> [ div, code, code ]
(results now come out in document order)
Same goes for .parents(), .nextAll(), .prevAll(), and .siblings().
Exception: .parents() will still return the results in reverse document order.
jQuery.data(elem)
=> { object of data }
(no longer returns the unique ID assigned to the node)
2009-09-25 19:55:20 +02:00
var set = jQuery ( "<div/>" ) . before ( "<span>test</span>" ) ;
2009-09-15 00:09:42 +02:00
equals ( set [ 0 ] . nodeName . toLowerCase ( ) , "span" , "Insert the element before the disconnected node." ) ;
equals ( set . length , 2 , "Insert the element before the disconnected node." ) ;
2009-07-12 22:19:43 +02:00
}
test ( "before(String|Element|Array<Element>|jQuery)" , function ( ) {
testBefore ( bareObj ) ;
2009-03-18 22:15:38 +01:00
} ) ;
2009-07-12 22:19:43 +02:00
test ( "before(Function)" , function ( ) {
testBefore ( functionReturningObj ) ;
} )
2009-03-18 22:15:38 +01:00
test ( "insertBefore(String|Element|Array<Element>|jQuery)" , function ( ) {
expect ( 4 ) ;
2011-04-12 10:47:46 +02:00
var expected = "This is a normal link: bugaYahoo" ;
jQuery ( "<b>buga</b>" ) . insertBefore ( "#yahoo" ) ;
equals ( jQuery ( "#en" ) . text ( ) , expected , "Insert String before" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
expected = "This is a normal link: Try them out:Yahoo" ;
2011-04-12 10:47:46 +02:00
jQuery ( document . getElementById ( "first" ) ) . insertBefore ( "#yahoo" ) ;
equals ( jQuery ( "#en" ) . text ( ) , expected , "Insert element before" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
expected = "This is a normal link: Try them out:diveintomarkYahoo" ;
2011-04-12 10:47:46 +02:00
jQuery ( [ document . getElementById ( "first" ) , document . getElementById ( "mark" ) ] ) . insertBefore ( "#yahoo" ) ;
equals ( jQuery ( "#en" ) . text ( ) , expected , "Insert array of elements before" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
expected = "This is a normal link: diveintomarkTry them out:Yahoo" ;
2011-04-12 10:47:46 +02:00
jQuery ( "#mark, #first" ) . insertBefore ( "#yahoo" ) ;
equals ( jQuery ( "#en" ) . text ( ) , expected , "Insert jQuery before" ) ;
2009-03-18 22:15:38 +01:00
} ) ;
2009-07-12 22:19:43 +02:00
var testAfter = function ( val ) {
2009-09-15 00:09:42 +02:00
expect ( 6 ) ;
2011-04-12 10:47:46 +02:00
var expected = "This is a normal link: Yahoobuga" ;
jQuery ( "#yahoo" ) . after ( val ( "<b>buga</b>" ) ) ;
equals ( jQuery ( "#en" ) . text ( ) , expected , "Insert String after" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
expected = "This is a normal link: YahooTry them out:" ;
2011-04-12 10:47:46 +02:00
jQuery ( "#yahoo" ) . after ( val ( document . getElementById ( "first" ) ) ) ;
equals ( jQuery ( "#en" ) . text ( ) , expected , "Insert element after" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
expected = "This is a normal link: YahooTry them out:diveintomark" ;
2011-04-12 10:47:46 +02:00
jQuery ( "#yahoo" ) . after ( val ( [ document . getElementById ( "first" ) , document . getElementById ( "mark" ) ] ) ) ;
equals ( jQuery ( "#en" ) . text ( ) , expected , "Insert array of elements after" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
expected = "This is a normal link: YahoodiveintomarkTry them out:" ;
2011-04-12 10:47:46 +02:00
jQuery ( "#yahoo" ) . after ( val ( jQuery ( "#mark, #first" ) ) ) ;
equals ( jQuery ( "#en" ) . text ( ) , expected , "Insert jQuery after" ) ;
2009-09-15 00:09:42 +02:00
A follow-up to [6578] (which stopped adding expandos to elements that didn't have data). That broke jQuery.unique() (so we're now using the unique from Sizzle). Using Sizzle's unique (which also sorts in document order) changed how add, andSelf, parents, nextAll, prevAll, and siblings work. after and before were changed to not use .add() (in order to guarantee their position in the jQuery set). Also, jQuery.data(elem) was updated to return that element's data object (instead of its ID).
$("<div/>").after("<span/>")
=> [ div, span ]
(calling after on a disconnected DOM node adds the nodes to the end of the jQuery set)
$("<div/>").before("<span/>")
=> [ span, div ]
(calling before on a disconnected DOM node adds the nodes to the beginning of the jQuery set)
$("div").add("span")
=> [ div, span, span, div, span ]
(results now come out in document order)
$("div").find("code").andSelf();
=> [ div, code, code ]
(results now come out in document order)
Same goes for .parents(), .nextAll(), .prevAll(), and .siblings().
Exception: .parents() will still return the results in reverse document order.
jQuery.data(elem)
=> { object of data }
(no longer returns the unique ID assigned to the node)
2009-09-25 19:55:20 +02:00
var set = jQuery ( "<div/>" ) . after ( "<span>test</span>" ) ;
2009-09-15 00:09:42 +02:00
equals ( set [ 1 ] . nodeName . toLowerCase ( ) , "span" , "Insert the element after the disconnected node." ) ;
equals ( set . length , 2 , "Insert the element after the disconnected node." ) ;
2009-07-12 22:19:43 +02:00
} ;
test ( "after(String|Element|Array<Element>|jQuery)" , function ( ) {
testAfter ( bareObj ) ;
2009-03-18 22:15:38 +01:00
} ) ;
2009-07-12 22:19:43 +02:00
test ( "after(Function)" , function ( ) {
testAfter ( functionReturningObj ) ;
} )
2009-03-18 22:15:38 +01:00
test ( "insertAfter(String|Element|Array<Element>|jQuery)" , function ( ) {
expect ( 4 ) ;
2011-04-12 10:47:46 +02:00
var expected = "This is a normal link: Yahoobuga" ;
jQuery ( "<b>buga</b>" ) . insertAfter ( "#yahoo" ) ;
equals ( jQuery ( "#en" ) . text ( ) , expected , "Insert String after" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
expected = "This is a normal link: YahooTry them out:" ;
2011-04-12 10:47:46 +02:00
jQuery ( document . getElementById ( "first" ) ) . insertAfter ( "#yahoo" ) ;
equals ( jQuery ( "#en" ) . text ( ) , expected , "Insert element after" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
expected = "This is a normal link: YahooTry them out:diveintomark" ;
2011-04-12 10:47:46 +02:00
jQuery ( [ document . getElementById ( "first" ) , document . getElementById ( "mark" ) ] ) . insertAfter ( "#yahoo" ) ;
equals ( jQuery ( "#en" ) . text ( ) , expected , "Insert array of elements after" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
expected = "This is a normal link: YahoodiveintomarkTry them out:" ;
2011-04-12 10:47:46 +02:00
jQuery ( "#mark, #first" ) . insertAfter ( "#yahoo" ) ;
equals ( jQuery ( "#en" ) . text ( ) , expected , "Insert jQuery after" ) ;
2009-03-18 22:15:38 +01:00
} ) ;
2009-07-12 23:08:54 +02:00
var testReplaceWith = function ( val ) {
2011-03-05 16:46:12 +01:00
expect ( 21 ) ;
2011-04-12 10:47:46 +02:00
jQuery ( "#yahoo" ) . replaceWith ( val ( "<b id='replace'>buga</b>" ) ) ;
ok ( jQuery ( "#replace" ) [ 0 ] , "Replace element with string" ) ;
ok ( ! jQuery ( "#yahoo" ) [ 0 ] , "Verify that original element is gone, after string" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2011-04-12 10:47:46 +02:00
jQuery ( "#yahoo" ) . replaceWith ( val ( document . getElementById ( "first" ) ) ) ;
ok ( jQuery ( "#first" ) [ 0 ] , "Replace element with element" ) ;
ok ( ! jQuery ( "#yahoo" ) [ 0 ] , "Verify that original element is gone, after element" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2011-04-17 08:43:57 +02:00
jQuery ( "#qunit-fixture" ) . append ( "<div id='bar'><div id='baz'</div></div>" ) ;
2011-04-12 10:47:46 +02:00
jQuery ( "#baz" ) . replaceWith ( "Baz" ) ;
equals ( jQuery ( "#bar" ) . text ( ) , "Baz" , "Replace element with text" ) ;
ok ( ! jQuery ( "#baz" ) [ 0 ] , "Verify that original element is gone, after element" ) ;
2010-02-02 03:48:05 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2011-04-12 10:47:46 +02:00
jQuery ( "#yahoo" ) . replaceWith ( val ( [ document . getElementById ( "first" ) , document . getElementById ( "mark" ) ] ) ) ;
ok ( jQuery ( "#first" ) [ 0 ] , "Replace element with array of elements" ) ;
ok ( jQuery ( "#mark" ) [ 0 ] , "Replace element with array of elements" ) ;
ok ( ! jQuery ( "#yahoo" ) [ 0 ] , "Verify that original element is gone, after array of elements" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2011-04-12 10:47:46 +02:00
jQuery ( "#yahoo" ) . replaceWith ( val ( jQuery ( "#mark, #first" ) ) ) ;
ok ( jQuery ( "#first" ) [ 0 ] , "Replace element with set of elements" ) ;
ok ( jQuery ( "#mark" ) [ 0 ] , "Replace element with set of elements" ) ;
ok ( ! jQuery ( "#yahoo" ) [ 0 ] , "Verify that original element is gone, after set of elements" ) ;
2009-09-15 00:09:42 +02:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2010-01-11 21:57:45 +01:00
var tmp = jQuery ( "<div/>" ) . appendTo ( "body" ) . click ( function ( ) { ok ( true , "Newly bound click run." ) ; } ) ;
2011-04-12 10:47:46 +02:00
var y = jQuery ( "<div/>" ) . appendTo ( "body" ) . click ( function ( ) { ok ( true , "Previously bound click run." ) ; } ) ;
2010-01-11 22:08:39 +01:00
var child = y . append ( "<b>test</b>" ) . find ( "b" ) . click ( function ( ) { ok ( true , "Child bound click run." ) ; return false ; } ) ;
2010-01-11 21:57:45 +01:00
y . replaceWith ( tmp ) ;
2010-01-11 22:08:39 +01:00
2010-01-11 21:57:45 +01:00
tmp . click ( ) ;
2010-01-11 22:25:01 +01:00
y . click ( ) ; // Shouldn't be run
child . click ( ) ; // Shouldn't be run
2010-01-12 05:32:11 +01:00
tmp . remove ( ) ;
y . remove ( ) ;
child . remove ( ) ;
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2010-01-11 22:25:01 +01:00
2011-04-12 10:47:46 +02:00
y = jQuery ( "<div/>" ) . appendTo ( "body" ) . click ( function ( ) { ok ( true , "Previously bound click run." ) ; } ) ;
2010-01-11 22:25:01 +01:00
var child2 = y . append ( "<u>test</u>" ) . find ( "u" ) . click ( function ( ) { ok ( true , "Child 2 bound click run." ) ; return false ; } ) ;
y . replaceWith ( child2 ) ;
child2 . click ( ) ;
2010-01-11 21:57:45 +01:00
2010-01-12 05:32:11 +01:00
y . remove ( ) ;
child2 . remove ( ) ;
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2010-01-11 21:57:45 +01:00
2009-09-15 00:09:42 +02:00
var set = jQuery ( "<div/>" ) . replaceWith ( val ( "<span>test</span>" ) ) ;
equals ( set [ 0 ] . nodeName . toLowerCase ( ) , "span" , "Replace the disconnected node." ) ;
equals ( set . length , 1 , "Replace the disconnected node." ) ;
2011-03-05 16:59:25 +01:00
2011-04-12 10:47:46 +02:00
var non _existant = jQuery ( "#does-not-exist" ) . replaceWith ( val ( "<b>should not throw an error</b>" ) ) ;
2011-03-05 16:59:25 +01:00
equals ( non _existant . length , 0 , "Length of non existant element." ) ;
2009-12-05 21:30:36 +01:00
var $div = jQuery ( "<div class='replacewith'></div>" ) . appendTo ( "body" ) ;
2010-01-12 05:32:11 +01:00
// TODO: Work on jQuery(...) inline script execution
//$div.replaceWith("<div class='replacewith'></div><script>" +
//"equals(jQuery('.replacewith').length, 1, 'Check number of elements in page.');" +
//"</script>");
2011-04-12 10:47:46 +02:00
equals ( jQuery ( ".replacewith" ) . length , 1 , "Check number of elements in page." ) ;
jQuery ( ".replacewith" ) . remove ( ) ;
2010-10-09 17:41:58 +02:00
QUnit . reset ( ) ;
2011-04-17 08:43:57 +02:00
jQuery ( "#qunit-fixture" ) . append ( "<div id='replaceWith'></div>" ) ;
equals ( jQuery ( "#qunit-fixture" ) . find ( "div[id=replaceWith]" ) . length , 1 , "Make sure only one div exists." ) ;
2010-10-09 17:41:58 +02:00
jQuery ( "#replaceWith" ) . replaceWith ( val ( "<div id='replaceWith'></div>" ) ) ;
2011-04-17 08:43:57 +02:00
equals ( jQuery ( "#qunit-fixture" ) . find ( "div[id=replaceWith]" ) . length , 1 , "Make sure only one div exists." ) ;
2010-10-09 17:41:58 +02:00
jQuery ( "#replaceWith" ) . replaceWith ( val ( "<div id='replaceWith'></div>" ) ) ;
2011-04-17 08:43:57 +02:00
equals ( jQuery ( "#qunit-fixture" ) . find ( "div[id=replaceWith]" ) . length , 1 , "Make sure only one div exists." ) ;
2009-07-12 23:08:54 +02:00
}
test ( "replaceWith(String|Element|Array<Element>|jQuery)" , function ( ) {
testReplaceWith ( bareObj ) ;
2009-03-18 22:15:38 +01:00
} ) ;
2009-07-12 23:08:54 +02:00
test ( "replaceWith(Function)" , function ( ) {
testReplaceWith ( functionReturningObj ) ;
2010-01-26 01:22:28 +01:00
2011-03-05 16:46:12 +01:00
expect ( 22 ) ;
2010-01-26 01:22:28 +01:00
var y = jQuery ( "#yahoo" ) [ 0 ] ;
jQuery ( y ) . replaceWith ( function ( ) {
equals ( this , y , "Make sure the context is coming in correctly." ) ;
} ) ;
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2010-02-02 03:53:31 +01:00
} ) ;
test ( "replaceWith(string) for more than one element" , function ( ) {
expect ( 3 ) ;
2011-04-12 10:47:46 +02:00
equals ( jQuery ( "#foo p" ) . length , 3 , "ensuring that test data has not changed" ) ;
2010-02-02 03:53:31 +01:00
2011-04-12 10:47:46 +02:00
jQuery ( "#foo p" ) . replaceWith ( "<span>bar</span>" ) ;
equals ( jQuery ( "#foo span" ) . length , 3 , "verify that all the three original element have been replaced" ) ;
equals ( jQuery ( "#foo p" ) . length , 0 , "verify that all the three original element have been replaced" ) ;
2010-02-02 03:53:31 +01:00
} ) ;
2009-07-12 23:08:54 +02:00
2009-03-18 22:15:38 +01:00
test ( "replaceAll(String|Element|Array<Element>|jQuery)" , function ( ) {
expect ( 10 ) ;
2011-04-12 10:47:46 +02:00
jQuery ( "<b id='replace'>buga</b>" ) . replaceAll ( "#yahoo" ) ;
ok ( jQuery ( "#replace" ) [ 0 ] , "Replace element with string" ) ;
ok ( ! jQuery ( "#yahoo" ) [ 0 ] , "Verify that original element is gone, after string" ) ;
2009-07-21 11:17:33 +02:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2011-04-12 10:47:46 +02:00
jQuery ( document . getElementById ( "first" ) ) . replaceAll ( "#yahoo" ) ;
ok ( jQuery ( "#first" ) [ 0 ] , "Replace element with element" ) ;
ok ( ! jQuery ( "#yahoo" ) [ 0 ] , "Verify that original element is gone, after element" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2011-04-12 10:47:46 +02:00
jQuery ( [ document . getElementById ( "first" ) , document . getElementById ( "mark" ) ] ) . replaceAll ( "#yahoo" ) ;
ok ( jQuery ( "#first" ) [ 0 ] , "Replace element with array of elements" ) ;
ok ( jQuery ( "#mark" ) [ 0 ] , "Replace element with array of elements" ) ;
ok ( ! jQuery ( "#yahoo" ) [ 0 ] , "Verify that original element is gone, after array of elements" ) ;
2009-03-18 22:15:38 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2010-08-26 21:21:01 +02:00
jQuery ( "#mark, #first" ) . replaceAll ( "#yahoo" ) ;
2011-04-12 10:47:46 +02:00
ok ( jQuery ( "#first" ) [ 0 ] , "Replace element with set of elements" ) ;
ok ( jQuery ( "#mark" ) [ 0 ] , "Replace element with set of elements" ) ;
ok ( ! jQuery ( "#yahoo" ) [ 0 ] , "Verify that original element is gone, after set of elements" ) ;
2009-03-18 22:15:38 +01:00
} ) ;
2011-01-21 17:08:15 +01:00
test ( "jQuery.clone() (#8017)" , function ( ) {
expect ( 2 ) ;
ok ( jQuery . clone && jQuery . isFunction ( jQuery . clone ) , "jQuery.clone() utility exists and is a function." ) ;
2011-04-17 08:43:57 +02:00
var main = jQuery ( "#qunit-fixture" ) [ 0 ] ,
2011-01-21 17:08:15 +01:00
clone = jQuery . clone ( main ) ;
2011-01-22 00:41:42 +01:00
equals ( main . childNodes . length , clone . childNodes . length , "Simple child length to ensure a large dom tree copies correctly" ) ;
2011-01-21 17:08:15 +01:00
} ) ;
2011-01-28 17:55:39 +01:00
test ( "clone() (#8070)" , function ( ) {
expect ( 2 ) ;
2011-04-17 08:43:57 +02:00
jQuery ( "<select class='test8070'></select><select class='test8070'></select>" ) . appendTo ( "#qunit-fixture" ) ;
2011-04-12 10:47:46 +02:00
var selects = jQuery ( ".test8070" ) ;
selects . append ( "<OPTION>1</OPTION><OPTION>2</OPTION>" ) ;
2011-01-28 17:55:39 +01:00
equals ( selects [ 0 ] . childNodes . length , 2 , "First select got two nodes" ) ;
equals ( selects [ 1 ] . childNodes . length , 2 , "Second select got two nodes" ) ;
selects . remove ( ) ;
} ) ;
2009-03-18 22:15:38 +01:00
test ( "clone()" , function ( ) {
2010-12-19 22:33:53 +01:00
expect ( 37 ) ;
2011-04-12 10:47:46 +02:00
equals ( "This is a normal link: Yahoo" , jQuery ( "#en" ) . text ( ) , "Assert text for #en" ) ;
var clone = jQuery ( "#yahoo" ) . clone ( ) ;
equals ( "Try them out:Yahoo" , jQuery ( "#first" ) . append ( clone ) . text ( ) , "Check for clone" ) ;
equals ( "This is a normal link: Yahoo" , jQuery ( "#en" ) . text ( ) , "Reassert text for #en" ) ;
2009-03-18 22:15:38 +01:00
var cloneTags = [
"<table/>" , "<tr/>" , "<td/>" , "<div/>" ,
"<button/>" , "<ul/>" , "<ol/>" , "<li/>" ,
"<input type='checkbox' />" , "<select/>" , "<option/>" , "<textarea/>" ,
"<tbody/>" , "<thead/>" , "<tfoot/>" , "<iframe/>"
] ;
for ( var i = 0 ; i < cloneTags . length ; i ++ ) {
var j = jQuery ( cloneTags [ i ] ) ;
2011-04-12 10:47:46 +02:00
equals ( j [ 0 ] . tagName , j . clone ( ) [ 0 ] . tagName , "Clone a " + cloneTags [ i ] ) ;
2009-03-18 22:15:38 +01:00
}
// using contents will get comments regular, text, and comment nodes
var cl = jQuery ( "#nonnodes" ) . contents ( ) . clone ( ) ;
ok ( cl . length >= 2 , "Check node,textnode,comment clone works (some browsers delete comments on clone)" ) ;
var div = jQuery ( "<div><ul><li>test</li></ul></div>" ) . click ( function ( ) {
ok ( true , "Bound event still exists." ) ;
} ) ;
2011-01-09 22:58:47 +01:00
clone = div . clone ( true ) ;
// manually clean up detached elements
div . remove ( ) ;
div = clone . clone ( true ) ;
// manually clean up detached elements
clone . remove ( ) ;
2009-03-18 22:15:38 +01:00
equals ( div . length , 1 , "One element cloned" ) ;
equals ( div [ 0 ] . nodeName . toUpperCase ( ) , "DIV" , "DIV element cloned" ) ;
div . trigger ( "click" ) ;
2011-01-09 22:58:47 +01:00
// manually clean up detached elements
div . remove ( ) ;
2009-03-18 22:15:38 +01:00
div = jQuery ( "<div/>" ) . append ( [ document . createElement ( "table" ) , document . createElement ( "table" ) ] ) ;
div . find ( "table" ) . click ( function ( ) {
ok ( true , "Bound event still exists." ) ;
} ) ;
2011-01-09 22:58:47 +01:00
clone = div . clone ( true ) ;
equals ( clone . length , 1 , "One element cloned" ) ;
equals ( clone [ 0 ] . nodeName . toUpperCase ( ) , "DIV" , "DIV element cloned" ) ;
clone . find ( "table:last" ) . trigger ( "click" ) ;
// manually clean up detached elements
div . remove ( ) ;
clone . remove ( ) ;
2009-03-18 22:15:38 +01:00
2011-02-01 14:57:18 +01:00
var divEvt = jQuery ( "<div><ul><li>test</li></ul></div>" ) . click ( function ( ) {
ok ( false , "Bound event still exists after .clone()." ) ;
} ) ,
cloneEvt = divEvt . clone ( ) ;
// Make sure that doing .clone() doesn't clone events
cloneEvt . trigger ( "click" ) ;
cloneEvt . remove ( ) ;
divEvt . remove ( ) ;
2010-12-12 09:20:31 +01:00
// this is technically an invalid object, but because of the special
// classid instantiation it is the only kind that IE has trouble with,
2010-12-12 20:37:00 +01:00
// so let's test with it too.
2011-04-12 10:47:46 +02:00
div = jQuery ( "<div/>" ) . html ( "<object height='355' width='425' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'> <param name='movie' value='http://www.youtube.com/v/3KANI2dpXLw&hl=en'> <param name='wmode' value='transparent'> </object>" ) ;
2009-03-18 22:15:38 +01:00
2010-12-12 09:20:31 +01:00
clone = div . clone ( true ) ;
equals ( clone . length , 1 , "One element cloned" ) ;
equals ( clone . html ( ) , div . html ( ) , "Element contents cloned" ) ;
equals ( clone [ 0 ] . nodeName . toUpperCase ( ) , "DIV" , "DIV element cloned" ) ;
// and here's a valid one.
2011-04-12 10:47:46 +02:00
div = jQuery ( "<div/>" ) . html ( "<object height='355' width='425' type='application/x-shockwave-flash' data='http://www.youtube.com/v/3KANI2dpXLw&hl=en'> <param name='movie' value='http://www.youtube.com/v/3KANI2dpXLw&hl=en'> <param name='wmode' value='transparent'> </object>" ) ;
2010-12-12 09:20:31 +01:00
clone = div . clone ( true ) ;
equals ( clone . length , 1 , "One element cloned" ) ;
equals ( clone . html ( ) , div . html ( ) , "Element contents cloned" ) ;
equals ( clone [ 0 ] . nodeName . toUpperCase ( ) , "DIV" , "DIV element cloned" ) ;
2009-12-09 22:28:58 +01:00
2010-12-22 21:43:17 +01:00
div = jQuery ( "<div/>" ) . data ( { a : true } ) ;
2011-01-09 22:58:47 +01:00
clone = div . clone ( true ) ;
equals ( clone . data ( "a" ) , true , "Data cloned." ) ;
clone . data ( "a" , false ) ;
equals ( clone . data ( "a" ) , false , "Ensure cloned element data object was correctly modified" ) ;
2010-12-22 21:43:17 +01:00
equals ( div . data ( "a" ) , true , "Ensure cloned element data object is copied, not referenced" ) ;
2010-02-02 03:26:47 +01:00
2011-01-09 22:58:47 +01:00
// manually clean up detached elements
div . remove ( ) ;
clone . remove ( ) ;
2010-02-02 03:26:47 +01:00
var form = document . createElement ( "form" ) ;
form . action = "/test/" ;
var div = document . createElement ( "div" ) ;
div . appendChild ( document . createTextNode ( "test" ) ) ;
form . appendChild ( div ) ;
equals ( jQuery ( form ) . clone ( ) . children ( ) . length , 1 , "Make sure we just get the form back." ) ;
2010-11-21 01:58:46 +01:00
equal ( jQuery ( "body" ) . clone ( ) . children ( ) [ 0 ] . id , "qunit-header" , "Make sure cloning body works" ) ;
2011-01-10 01:38:44 +01:00
} ) ;
test ( "clone(form element) (Bug #3879, #6655)" , function ( ) {
2011-03-08 18:07:05 +01:00
expect ( 5 ) ;
2011-02-01 23:54:02 +01:00
var element = jQuery ( "<select><option>Foo</option><option selected>Bar</option></select>" ) ;
2011-01-10 01:38:44 +01:00
equals ( element . clone ( ) . find ( "option:selected" ) . val ( ) , element . find ( "option:selected" ) . val ( ) , "Selected option cloned correctly" ) ;
2011-04-12 10:47:46 +02:00
element = jQuery ( "<input type='checkbox' value='foo'>" ) . attr ( "checked" , "checked" ) ;
2011-01-10 01:38:44 +01:00
clone = element . clone ( ) ;
equals ( clone . is ( ":checked" ) , element . is ( ":checked" ) , "Checked input cloned correctly" ) ;
equals ( clone [ 0 ] . defaultValue , "foo" , "Checked input defaultValue cloned correctly" ) ;
2011-05-11 14:12:19 +02:00
2011-03-08 18:07:05 +01:00
// defaultChecked also gets set now due to setAttribute in attr, is this check still valid?
// equals( clone[0].defaultChecked, !jQuery.support.noCloneChecked, "Checked input defaultChecked cloned correctly" );
2011-01-10 01:38:44 +01:00
element = jQuery ( "<input type='text' value='foo'>" ) ;
clone = element . clone ( ) ;
equals ( clone [ 0 ] . defaultValue , "foo" , "Text input defaultValue cloned correctly" ) ;
element = jQuery ( "<textarea>foo</textarea>" ) ;
clone = element . clone ( ) ;
equals ( clone [ 0 ] . defaultValue , "foo" , "Textarea defaultValue cloned correctly" ) ;
2009-03-18 22:15:38 +01:00
} ) ;
2011-02-01 23:54:02 +01:00
test ( "clone(multiple selected options) (Bug #8129)" , function ( ) {
expect ( 1 ) ;
var element = jQuery ( "<select><option>Foo</option><option selected>Bar</option><option selected>Baz</option></select>" ) ;
equals ( element . clone ( ) . find ( "option:selected" ) . length , element . find ( "option:selected" ) . length , "Multiple selected options cloned correctly" ) ;
} ) ;
2009-03-18 22:15:38 +01:00
if ( ! isLocal ) {
test ( "clone() on XML nodes" , function ( ) {
expect ( 2 ) ;
stop ( ) ;
jQuery . get ( "data/dashboard.xml" , function ( xml ) {
var root = jQuery ( xml . documentElement ) . clone ( ) ;
var origTab = jQuery ( "tab" , xml ) . eq ( 0 ) ;
var cloneTab = jQuery ( "tab" , root ) . eq ( 0 ) ;
origTab . text ( "origval" ) ;
cloneTab . text ( "cloneval" ) ;
equals ( origTab . text ( ) , "origval" , "Check original XML node was correctly set" ) ;
equals ( cloneTab . text ( ) , "cloneval" , "Check cloned XML node was correctly set" ) ;
start ( ) ;
} ) ;
} ) ;
}
2009-07-12 22:19:43 +02:00
var testHtml = function ( valueObj ) {
2011-04-12 22:39:30 +02:00
expect ( 34 ) ;
2009-07-21 11:17:33 +02:00
2009-03-18 22:15:38 +01:00
jQuery . scriptorder = 0 ;
2009-07-21 11:17:33 +02:00
2011-04-17 08:43:57 +02:00
var div = jQuery ( "#qunit-fixture > div" ) ;
2009-07-12 22:19:43 +02:00
div . html ( valueObj ( "<b>test</b>" ) ) ;
2009-03-18 22:15:38 +01:00
var pass = true ;
for ( var i = 0 ; i < div . size ( ) ; i ++ ) {
if ( div . get ( i ) . childNodes . length != 1 ) pass = false ;
}
ok ( pass , "Set HTML" ) ;
2009-07-21 11:17:33 +02:00
2011-04-12 10:47:46 +02:00
div = jQuery ( "<div/>" ) . html ( valueObj ( "<div id='parent_1'><div id='child_1'/></div><div id='parent_2'/>" ) ) ;
2010-01-25 03:37:05 +01:00
equals ( div . children ( ) . length , 2 , "Make sure two child nodes exist." ) ;
equals ( div . children ( ) . children ( ) . length , 1 , "Make sure that a grandchild exists." ) ;
2010-02-13 13:05:39 +01:00
var space = jQuery ( "<div/>" ) . html ( valueObj ( " " ) ) [ 0 ] . innerHTML ;
2010-09-27 16:28:35 +02:00
ok ( /^\xA0$|^ $/ . test ( space ) , "Make sure entities are passed through correctly." ) ;
2010-02-06 01:58:08 +01:00
equals ( jQuery ( "<div/>" ) . html ( valueObj ( "&" ) ) [ 0 ] . innerHTML , "&" , "Make sure entities are passed through correctly." ) ;
2011-04-17 08:43:57 +02:00
jQuery ( "#qunit-fixture" ) . html ( valueObj ( "<style>.foobar{color:green;}</style>" ) ) ;
2010-02-13 09:30:45 +01:00
2011-04-17 08:43:57 +02:00
equals ( jQuery ( "#qunit-fixture" ) . children ( ) . length , 1 , "Make sure there is a child element." ) ;
equals ( jQuery ( "#qunit-fixture" ) . children ( ) [ 0 ] . nodeName . toUpperCase ( ) , "STYLE" , "And that a style element was inserted." ) ;
2010-02-13 09:30:45 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-03-18 22:15:38 +01:00
// using contents will get comments regular, text, and comment nodes
var j = jQuery ( "#nonnodes" ) . contents ( ) ;
2009-07-12 22:19:43 +02:00
j . html ( valueObj ( "<b>bold</b>" ) ) ;
2009-07-21 11:17:33 +02:00
2009-03-18 22:15:38 +01:00
// this is needed, or the expando added by jQuery unique will yield a different html
2011-04-12 10:47:46 +02:00
j . find ( "b" ) . removeData ( ) ;
2009-03-18 22:15:38 +01:00
equals ( j . html ( ) . replace ( / xmlns="[^"]+"/g , "" ) . toLowerCase ( ) , "<b>bold</b>" , "Check node,textnode,comment with html()" ) ;
2009-07-21 11:17:33 +02:00
2011-04-17 08:43:57 +02:00
jQuery ( "#qunit-fixture" ) . html ( valueObj ( "<select/>" ) ) ;
jQuery ( "#qunit-fixture select" ) . html ( valueObj ( "<option>O1</option><option selected='selected'>O2</option><option>O3</option>" ) ) ;
equals ( jQuery ( "#qunit-fixture select" ) . val ( ) , "O2" , "Selected option correct" ) ;
2009-07-21 11:17:33 +02:00
2011-04-12 10:47:46 +02:00
var $div = jQuery ( "<div />" ) ;
equals ( $div . html ( valueObj ( 5 ) ) . html ( ) , "5" , "Setting a number as html" ) ;
equals ( $div . html ( valueObj ( 0 ) ) . html ( ) , "0" , "Setting a zero as html" ) ;
2009-07-21 11:17:33 +02:00
2011-04-12 10:47:46 +02:00
var $div2 = jQuery ( "<div/>" ) , insert = "<div>hello1</div>" ;
2010-01-13 21:23:05 +01:00
equals ( $div2 . html ( insert ) . html ( ) . replace ( />/g , ">" ) , insert , "Verify escaped insertion." ) ;
equals ( $div2 . html ( "x" + insert ) . html ( ) . replace ( />/g , ">" ) , "x" + insert , "Verify escaped insertion." ) ;
equals ( $div2 . html ( " " + insert ) . html ( ) . replace ( />/g , ">" ) , " " + insert , "Verify escaped insertion." ) ;
2009-11-11 20:23:56 +01:00
2009-12-07 02:26:39 +01:00
var map = jQuery ( "<map/>" ) . html ( valueObj ( "<area id='map01' shape='rect' coords='50,50,150,150' href='http://www.jquery.com/' alt='jQuery'>" ) ) ;
equals ( map [ 0 ] . childNodes . length , 1 , "The area was inserted." ) ;
equals ( map [ 0 ] . firstChild . nodeName . toLowerCase ( ) , "area" , "The area was inserted." ) ;
2009-11-11 20:23:56 +01:00
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-07-21 11:17:33 +02:00
2011-04-17 08:43:57 +02:00
jQuery ( "#qunit-fixture" ) . html ( valueObj ( "<script type='something/else'>ok( false, 'Non-script evaluated.' );</script><script type='text/javascript'>ok( true, 'text/javascript is evaluated.' );</script><script>ok( true, 'No type is evaluated.' );</script><div><script type='text/javascript'>ok( true, 'Inner text/javascript is evaluated.' );</script><script>ok( true, 'Inner No type is evaluated.' );</script><script type='something/else'>ok( false, 'Non-script evaluated.' );</script></div>" ) ) ;
2009-07-21 11:17:33 +02:00
2011-04-17 08:43:57 +02:00
var child = jQuery ( "#qunit-fixture" ) . find ( "script" ) ;
2011-04-12 22:39:30 +02:00
equals ( child . length , 2 , "Make sure that two non-JavaScript script tags are left." ) ;
equals ( child [ 0 ] . type , "something/else" , "Verify type of script tag." ) ;
equals ( child [ 1 ] . type , "something/else" , "Verify type of script tag." ) ;
2009-07-21 11:17:33 +02:00
2011-04-17 08:43:57 +02:00
jQuery ( "#qunit-fixture" ) . html ( valueObj ( "<script>ok( true, 'Test repeated injection of script.' );</script>" ) ) ;
jQuery ( "#qunit-fixture" ) . html ( valueObj ( "<script>ok( true, 'Test repeated injection of script.' );</script>" ) ) ;
jQuery ( "#qunit-fixture" ) . html ( valueObj ( "<script>ok( true, 'Test repeated injection of script.' );</script>" ) ) ;
2009-07-21 11:17:33 +02:00
2011-04-17 08:43:57 +02:00
jQuery ( "#qunit-fixture" ) . html ( valueObj ( "<script type='text/javascript'>ok( true, 'jQuery().html().evalScripts() Evals Scripts Twice in Firefox, see #975 (1)' );</script>" ) ) ;
2009-07-21 11:17:33 +02:00
2011-04-17 08:43:57 +02:00
jQuery ( "#qunit-fixture" ) . html ( valueObj ( "foo <form><script type='text/javascript'>ok( true, 'jQuery().html().evalScripts() Evals Scripts Twice in Firefox, see #975 (2)' );</script></form>" ) ) ;
2009-07-21 11:17:33 +02:00
2011-04-17 08:43:57 +02:00
jQuery ( "#qunit-fixture" ) . html ( valueObj ( "<script>equals(jQuery.scriptorder++, 0, 'Script is executed in order');equals(jQuery('#scriptorder').length, 1,'Execute after html (even though appears before)')<\/script><span id='scriptorder'><script>equals(jQuery.scriptorder++, 1, 'Script (nested) is executed in order');equals(jQuery('#scriptorder').length, 1,'Execute after html')<\/script></span><script>equals(jQuery.scriptorder++, 2, 'Script (unnested) is executed in order');equals(jQuery('#scriptorder').length, 1,'Execute after html')<\/script>" ) ) ;
2009-07-12 22:19:43 +02:00
}
test ( "html(String)" , function ( ) {
testHtml ( bareObj ) ;
2009-03-18 22:15:38 +01:00
} ) ;
2009-07-12 22:19:43 +02:00
test ( "html(Function)" , function ( ) {
testHtml ( functionReturningObj ) ;
2010-09-28 18:50:44 +02:00
2011-04-12 22:39:30 +02:00
expect ( 36 ) ;
2010-09-28 18:50:44 +02:00
QUnit . reset ( ) ;
2011-04-17 08:43:57 +02:00
jQuery ( "#qunit-fixture" ) . html ( function ( ) {
2010-09-28 18:50:44 +02:00
return jQuery ( this ) . text ( ) ;
} ) ;
2011-04-17 08:43:57 +02:00
ok ( ! /</ . test ( jQuery ( "#qunit-fixture" ) . html ( ) ) , "Replace html with text." ) ;
ok ( jQuery ( "#qunit-fixture" ) . html ( ) . length > 0 , "Make sure text exists." ) ;
2009-12-10 05:57:19 +01:00
} ) ;
2009-07-12 22:19:43 +02:00
2010-01-07 19:34:16 +01:00
test ( "html(Function) with incoming value" , function ( ) {
expect ( 20 ) ;
2010-12-07 02:37:16 +01:00
2011-04-17 08:43:57 +02:00
var div = jQuery ( "#qunit-fixture > div" ) , old = div . map ( function ( ) { return jQuery ( this ) . html ( ) } ) ;
2010-12-07 02:37:16 +01:00
2010-01-07 19:34:16 +01:00
div . html ( function ( i , val ) {
equals ( val , old [ i ] , "Make sure the incoming value is correct." ) ;
return "<b>test</b>" ;
} ) ;
2010-12-07 02:37:16 +01:00
2010-01-07 19:34:16 +01:00
var pass = true ;
div . each ( function ( ) {
if ( this . childNodes . length !== 1 ) {
pass = false ;
}
} )
ok ( pass , "Set HTML" ) ;
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2010-01-07 19:34:16 +01:00
// using contents will get comments regular, text, and comment nodes
var j = jQuery ( "#nonnodes" ) . contents ( ) ;
old = j . map ( function ( ) { return jQuery ( this ) . html ( ) ; } ) ;
2010-12-07 02:37:16 +01:00
2010-01-07 19:34:16 +01:00
j . html ( function ( i , val ) {
equals ( val , old [ i ] , "Make sure the incoming value is correct." ) ;
return "<b>bold</b>" ;
} ) ;
2010-08-27 20:16:27 +02:00
// Handle the case where no comment is in the document
if ( j . length === 2 ) {
equals ( null , null , "Make sure the incoming value is correct." ) ;
}
2010-12-07 02:37:16 +01:00
2011-04-12 10:47:46 +02:00
j . find ( "b" ) . removeData ( ) ;
2010-01-07 19:34:16 +01:00
equals ( j . html ( ) . replace ( / xmlns="[^"]+"/g , "" ) . toLowerCase ( ) , "<b>bold</b>" , "Check node,textnode,comment with html()" ) ;
2010-12-07 02:37:16 +01:00
2011-04-12 10:47:46 +02:00
var $div = jQuery ( "<div />" ) ;
2010-12-07 02:37:16 +01:00
2010-01-07 19:34:16 +01:00
equals ( $div . html ( function ( i , val ) {
equals ( val , "" , "Make sure the incoming value is correct." ) ;
return 5 ;
2011-04-12 10:47:46 +02:00
} ) . html ( ) , "5" , "Setting a number as html" ) ;
2010-12-07 02:37:16 +01:00
2010-01-07 19:34:16 +01:00
equals ( $div . html ( function ( i , val ) {
equals ( val , "5" , "Make sure the incoming value is correct." ) ;
return 0 ;
2011-04-12 10:47:46 +02:00
} ) . html ( ) , "0" , "Setting a zero as html" ) ;
2010-01-07 19:34:16 +01:00
2011-04-12 10:47:46 +02:00
var $div2 = jQuery ( "<div/>" ) , insert = "<div>hello1</div>" ;
2010-01-07 19:34:16 +01:00
equals ( $div2 . html ( function ( i , val ) {
equals ( val , "" , "Make sure the incoming value is correct." ) ;
return insert ;
2010-01-13 21:23:05 +01:00
} ) . html ( ) . replace ( />/g , ">" ) , insert , "Verify escaped insertion." ) ;
2010-12-07 02:37:16 +01:00
2010-01-07 19:34:16 +01:00
equals ( $div2 . html ( function ( i , val ) {
2010-01-13 21:23:05 +01:00
equals ( val . replace ( />/g , ">" ) , insert , "Make sure the incoming value is correct." ) ;
2010-01-07 19:34:16 +01:00
return "x" + insert ;
2010-01-13 21:23:05 +01:00
} ) . html ( ) . replace ( />/g , ">" ) , "x" + insert , "Verify escaped insertion." ) ;
2010-12-07 02:37:16 +01:00
2010-01-07 19:34:16 +01:00
equals ( $div2 . html ( function ( i , val ) {
2010-01-13 21:23:05 +01:00
equals ( val . replace ( />/g , ">" ) , "x" + insert , "Make sure the incoming value is correct." ) ;
2010-01-07 19:34:16 +01:00
return " " + insert ;
2010-12-07 02:37:16 +01:00
} ) . html ( ) . replace ( />/g , ">" ) , " " + insert , "Verify escaped insertion." ) ;
2010-01-07 19:34:16 +01:00
} ) ;
2009-07-21 11:17:33 +02:00
var testRemove = function ( method ) {
expect ( 9 ) ;
var first = jQuery ( "#ap" ) . children ( ":first" ) ;
first . data ( "foo" , "bar" ) ;
jQuery ( "#ap" ) . children ( ) [ method ] ( ) ;
2009-03-18 22:15:38 +01:00
ok ( jQuery ( "#ap" ) . text ( ) . length > 10 , "Check text is not removed" ) ;
equals ( jQuery ( "#ap" ) . children ( ) . length , 0 , "Check remove" ) ;
2009-07-21 11:17:33 +02:00
equals ( first . data ( "foo" ) , method == "remove" ? null : "bar" ) ;
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-07-21 11:17:33 +02:00
jQuery ( "#ap" ) . children ( ) [ method ] ( "a" ) ;
2009-03-18 22:15:38 +01:00
ok ( jQuery ( "#ap" ) . text ( ) . length > 10 , "Check text is not removed" ) ;
equals ( jQuery ( "#ap" ) . children ( ) . length , 1 , "Check filtered remove" ) ;
2009-07-21 11:17:33 +02:00
jQuery ( "#ap" ) . children ( ) [ method ] ( "a, code" ) ;
2009-03-18 22:15:38 +01:00
equals ( jQuery ( "#ap" ) . children ( ) . length , 0 , "Check multi-filtered remove" ) ;
// using contents will get comments regular, text, and comment nodes
2010-08-27 20:16:27 +02:00
// Handle the case where no comment is in the document
ok ( jQuery ( "#nonnodes" ) . contents ( ) . length >= 2 , "Check node,textnode,comment remove works" ) ;
2009-07-21 11:17:33 +02:00
jQuery ( "#nonnodes" ) . contents ( ) [ method ] ( ) ;
2009-03-18 22:15:38 +01:00
equals ( jQuery ( "#nonnodes" ) . contents ( ) . length , 0 , "Check node,textnode,comment remove works" ) ;
2009-07-21 11:17:33 +02:00
2011-01-09 22:58:47 +01:00
// manually clean up detached elements
if ( method === "detach" ) {
first . remove ( ) ;
}
2010-07-28 17:19:01 +02:00
QUnit . reset ( ) ;
2009-07-21 11:17:33 +02:00
var count = 0 ;
var first = jQuery ( "#ap" ) . children ( ":first" ) ;
2011-04-17 08:43:57 +02:00
var cleanUp = first . click ( function ( ) { count ++ } ) [ method ] ( ) . appendTo ( "#qunit-fixture" ) . click ( ) ;
2010-12-07 02:37:16 +01:00
2009-07-21 11:17:33 +02:00
equals ( method == "remove" ? 0 : 1 , count ) ;
2010-12-07 02:37:16 +01:00
2011-01-09 22:58:47 +01:00
// manually clean up detached elements
cleanUp . remove ( ) ;
2009-07-21 11:17:33 +02:00
} ;
test ( "remove()" , function ( ) {
testRemove ( "remove" ) ;
} ) ;
test ( "detach()" , function ( ) {
testRemove ( "detach" ) ;
2009-03-18 22:15:38 +01:00
} ) ;
test ( "empty()" , function ( ) {
expect ( 3 ) ;
equals ( jQuery ( "#ap" ) . children ( ) . empty ( ) . text ( ) . length , 0 , "Check text is removed" ) ;
equals ( jQuery ( "#ap" ) . children ( ) . length , 4 , "Check elements are not removed" ) ;
// using contents will get comments regular, text, and comment nodes
var j = jQuery ( "#nonnodes" ) . contents ( ) ;
j . empty ( ) ;
equals ( j . html ( ) , "" , "Check node,textnode,comment empty works" ) ;
} ) ;
2010-01-24 03:20:19 +01:00
test ( "jQuery.cleanData" , function ( ) {
2010-01-25 21:18:51 +01:00
expect ( 14 ) ;
2010-12-07 02:37:16 +01:00
2010-01-24 03:20:19 +01:00
var type , pos , div , child ;
2010-12-07 02:37:16 +01:00
2010-01-24 03:20:19 +01:00
type = "remove" ;
2010-12-07 02:37:16 +01:00
2010-01-24 03:20:19 +01:00
// Should trigger 4 remove event
div = getDiv ( ) . remove ( ) ;
2010-12-07 02:37:16 +01:00
2010-01-24 03:20:19 +01:00
// Should both do nothing
pos = "Outer" ;
div . trigger ( "click" ) ;
2010-12-07 02:37:16 +01:00
2010-01-24 03:20:19 +01:00
pos = "Inner" ;
div . children ( ) . trigger ( "click" ) ;
2010-12-07 02:37:16 +01:00
2010-01-24 03:20:19 +01:00
type = "empty" ;
div = getDiv ( ) ;
child = div . children ( ) ;
2010-12-07 02:37:16 +01:00
2010-01-24 03:20:19 +01:00
// Should trigger 2 remove event
div . empty ( ) ;
2010-12-07 02:37:16 +01:00
2010-01-24 03:20:19 +01:00
// Should trigger 1
pos = "Outer" ;
div . trigger ( "click" ) ;
2010-12-07 02:37:16 +01:00
2010-01-24 03:20:19 +01:00
// Should do nothing
pos = "Inner" ;
child . trigger ( "click" ) ;
2010-01-25 21:18:51 +01:00
// Should trigger 2
div . remove ( ) ;
2010-12-07 02:37:16 +01:00
2010-01-24 03:20:19 +01:00
type = "html" ;
2010-12-07 02:37:16 +01:00
2010-01-24 03:20:19 +01:00
div = getDiv ( ) ;
child = div . children ( ) ;
2010-12-07 02:37:16 +01:00
2010-01-24 03:20:19 +01:00
// Should trigger 2 remove event
div . html ( "<div></div>" ) ;
2010-12-07 02:37:16 +01:00
2010-01-24 03:20:19 +01:00
// Should trigger 1
pos = "Outer" ;
div . trigger ( "click" ) ;
2010-12-07 02:37:16 +01:00
2010-01-24 03:20:19 +01:00
// Should do nothing
pos = "Inner" ;
child . trigger ( "click" ) ;
2010-01-25 21:18:51 +01:00
// Should trigger 2
div . remove ( ) ;
2010-12-07 02:37:16 +01:00
2010-01-24 03:20:19 +01:00
function getDiv ( ) {
var div = jQuery ( "<div class='outer'><div class='inner'></div></div>" ) . click ( function ( ) {
ok ( true , type + " " + pos + " Click event fired." ) ;
} ) . focus ( function ( ) {
ok ( true , type + " " + pos + " Focus event fired." ) ;
} ) . find ( "div" ) . click ( function ( ) {
ok ( false , type + " " + pos + " Click event fired." ) ;
} ) . focus ( function ( ) {
ok ( false , type + " " + pos + " Focus event fired." ) ;
} ) . end ( ) . appendTo ( "body" ) ;
2010-12-07 02:37:16 +01:00
2010-01-24 03:20:19 +01:00
div [ 0 ] . detachEvent = div [ 0 ] . removeEventListener = function ( t ) {
ok ( true , type + " Outer " + t + " event unbound" ) ;
} ;
2010-12-07 02:37:16 +01:00
2010-01-24 03:20:19 +01:00
div [ 0 ] . firstChild . detachEvent = div [ 0 ] . firstChild . removeEventListener = function ( t ) {
ok ( true , type + " Inner " + t + " event unbound" ) ;
} ;
2010-12-07 02:37:16 +01:00
2010-01-24 03:20:19 +01:00
return div ;
}
2010-01-25 03:37:05 +01:00
} ) ;
2010-12-27 20:43:52 +01:00
test ( "jQuery.buildFragment - no plain-text caching (Bug #6779)" , function ( ) {
expect ( 1 ) ;
// DOM manipulation fails if added text matches an Object method
2011-04-17 08:43:57 +02:00
var $f = jQuery ( "<div />" ) . appendTo ( "#qunit-fixture" ) ,
2010-12-27 20:43:52 +01:00
bad = [ "start-" , "toString" , "hasOwnProperty" , "append" , "here&there!" , "-end" ] ;
for ( var i = 0 ; i < bad . length ; i ++ ) {
try {
$f . append ( bad [ i ] ) ;
}
catch ( e ) { }
}
2011-04-30 16:42:36 +02:00
equals ( $f . text ( ) , bad . join ( "" ) , "Cached strings that match Object properties" ) ;
2010-12-27 20:43:52 +01:00
$f . remove ( ) ;
} ) ;
2011-05-11 14:12:19 +02:00
test ( "jQuery.html - execute scripts escaped with html comment or CDATA (#9221)" , function ( ) {
2011-05-11 17:43:37 +02:00
expect ( 3 ) ;
2011-05-11 14:12:19 +02:00
jQuery ( [
'<script type="text/javascript">' ,
'<!--' ,
'ok( true, "<!-- handled" );' ,
'//-->' ,
'</script>'
] . join ( "\n" ) ) . appendTo ( "#qunit-fixture" ) ;
jQuery ( [
'<script type="text/javascript">' ,
'<![CDATA[' ,
'ok( true, "<![CDATA[ handled" );' ,
'//]]>' ,
'</script>'
] . join ( "\n" ) ) . appendTo ( "#qunit-fixture" ) ;
2011-05-11 17:43:37 +02:00
jQuery ( [
'<script type="text/javascript">' ,
'<!--//--><![CDATA[//><!--' ,
'ok( true, "<!--//--><![CDATA[//><!-- (Drupal case) handled" );' ,
'//--><!]]>' ,
'</script>'
] . join ( "\n" ) ) . appendTo ( "#qunit-fixture" ) ;
2011-05-11 14:12:19 +02:00
} ) ;
2011-05-13 18:26:17 +02:00
2011-04-30 16:42:36 +02:00
test ( "jQuery.buildFragment - plain objects are not a document #8950" , function ( ) {
expect ( 1 ) ;
try {
jQuery ( '<input type="hidden">' , { } ) ;
ok ( true , "Does not allow attribute object to be treated like a doc object" ) ;
} catch ( e ) { }
2011-05-13 18:26:17 +02:00
2011-04-30 16:42:36 +02:00
} ) ;