2019-02-18 18:02:38 +00:00
QUnit . module ( "traversing" , { afterEach : moduleTeardown } ) ;
2009-04-20 17:05:18 +00:00
2015-08-16 03:45:28 +00:00
QUnit . test ( "find(String)" , function ( assert ) {
assert . expect ( 1 ) ;
2015-08-16 06:59:58 +00:00
assert . equal ( jQuery ( "#foo" ) . find ( ".blogTest" ) . text ( ) , "Yahoo" , "Basic selector" ) ;
} ) ;
2013-02-19 04:52:29 +00:00
2015-08-16 03:45:28 +00:00
QUnit . test ( "find(String) under non-elements" , function ( assert ) {
assert . expect ( 2 ) ;
2009-03-18 21:15:38 +00:00
2015-08-16 06:59:58 +00:00
var j = jQuery ( "#nonnodes" ) . contents ( ) ;
assert . equal ( j . find ( "div" ) . length , 0 , "Check node,textnode,comment to find zero divs" ) ;
assert . equal ( j . find ( "div" ) . addBack ( ) . length , 3 , "Check node,textnode,comment to find zero divs, but preserves pushStack" ) ;
} ) ;
2013-02-19 04:52:29 +00:00
2023-02-13 17:34:41 +00:00
QUnit . test ( "find(leading combinator)" , function ( assert ) {
2015-08-16 03:45:28 +00:00
assert . expect ( 4 ) ;
2010-09-28 17:33:21 +00:00
2015-08-16 06:59:58 +00:00
assert . deepEqual ( jQuery ( "#qunit-fixture" ) . find ( "> div" ) . get ( ) , q ( "foo" , "nothiddendiv" , "moretests" , "tabindex-tests" , "liveHandlerOrder" , "siblingTest" , "fx-test-group" ) , "find child elements" ) ;
assert . deepEqual ( jQuery ( "#qunit-fixture" ) . find ( "> #foo, > #moretests" ) . get ( ) , q ( "foo" , "moretests" ) , "find child elements" ) ;
assert . deepEqual ( jQuery ( "#qunit-fixture" ) . find ( "> #foo > p" ) . get ( ) , q ( "sndp" , "en" , "sap" ) , "find child elements" ) ;
2012-11-01 03:36:43 +00:00
2015-08-16 06:59:58 +00:00
assert . deepEqual ( jQuery ( "#siblingTest, #siblingfirst" ) . find ( "+ *" ) . get ( ) , q ( "siblingnext" , "fx-test-group" ) , "ensure document order" ) ;
} ) ;
2009-03-18 21:15:38 +00:00
2015-08-16 03:45:28 +00:00
QUnit . test ( "find(node|jQuery object)" , function ( assert ) {
assert . expect ( 13 ) ;
2011-08-05 14:02:33 +00:00
2015-08-16 06:59:58 +00:00
var $foo = jQuery ( "#foo" ) ,
$blog = jQuery ( ".blogTest" ) ,
$first = jQuery ( "#first" ) ,
2011-03-16 05:16:32 +00:00
$two = $blog . add ( $first ) ,
2015-08-16 06:59:58 +00:00
$twoMore = jQuery ( "#ap" ) . add ( $blog ) ,
2011-03-16 05:16:32 +00:00
$fooTwo = $foo . add ( $blog ) ;
2015-08-16 03:45:28 +00:00
assert . equal ( $foo . find ( $blog ) . text ( ) , "Yahoo" , "Find with blog jQuery object" ) ;
assert . equal ( $foo . find ( $blog [ 0 ] ) . text ( ) , "Yahoo" , "Find with blog node" ) ;
assert . equal ( $foo . find ( $first ) . length , 0 , "#first is not in #foo" ) ;
2015-08-16 06:59:58 +00:00
assert . equal ( $foo . find ( $first [ 0 ] ) . length , 0 , "#first not in #foo (node)" ) ;
2015-08-16 03:45:28 +00:00
assert . deepEqual ( $foo . find ( $two ) . get ( ) , $blog . get ( ) , "Find returns only nodes within #foo" ) ;
assert . deepEqual ( $foo . find ( $twoMore ) . get ( ) , $blog . get ( ) , "...regardless of order" ) ;
2015-08-16 06:59:58 +00:00
assert . ok ( $fooTwo . find ( $blog ) . is ( ".blogTest" ) , "Blog is part of the collection, but also within foo" ) ;
assert . ok ( $fooTwo . find ( $blog [ 0 ] ) . is ( ".blogTest" ) , "Blog is part of the collection, but also within foo(node)" ) ;
2015-08-16 03:45:28 +00:00
assert . equal ( $two . find ( $foo ) . length , 0 , "Foo is not in two elements" ) ;
assert . equal ( $two . find ( $foo [ 0 ] ) . length , 0 , "Foo is not in two elements(node)" ) ;
assert . equal ( $two . find ( $first ) . length , 0 , "first is in the collection and not within two" ) ;
assert . equal ( $two . find ( $first ) . length , 0 , "first is in the collection and not within two(node)" ) ;
2022-01-04 15:27:18 +00:00
assert . equal ( $two . find ( $foo [ 0 ] ) . addBack ( ) . length , 2 , "find preserves the pushStack, see trac-12009" ) ;
2015-08-16 06:59:58 +00:00
} ) ;
2019-06-26 19:39:10 +00:00
QUnit . test ( "is(falsy|invalid)" , function ( assert ) {
assert . expect ( 5 ) ;
assert . ok ( ! jQuery ( "#foo" ) . is ( 0 ) , "Expected false for an invalid expression - 0" ) ;
assert . ok ( ! jQuery ( "#foo" ) . is ( null ) , "Expected false for an invalid expression - null" ) ;
assert . ok ( ! jQuery ( "#foo" ) . is ( "" ) , "Expected false for an invalid expression - \"\"" ) ;
assert . ok ( ! jQuery ( "#foo" ) . is ( undefined ) , "Expected false for an invalid expression - undefined" ) ;
assert . ok ( ! jQuery ( "#foo" ) . is ( { plain : "object" } ) , "Check passing invalid object" ) ;
} ) ;
QUnit . test ( "is(String)" , function ( assert ) {
assert . expect ( 33 ) ;
var link = document . getElementById ( "simon1" ) ,
input = document . getElementById ( "text1" ) ,
option = document . getElementById ( "option1a" ) ,
disconnected = document . createElement ( "div" ) ;
2015-08-16 06:59:58 +00:00
assert . ok ( jQuery ( "#form" ) . is ( "form" ) , "Check for element: A form must be a form" ) ;
assert . ok ( ! jQuery ( "#form" ) . is ( "div" ) , "Check for element: A form is not a div" ) ;
assert . ok ( jQuery ( "#mark" ) . is ( ".blog" ) , "Check for class: Expected class 'blog'" ) ;
assert . ok ( ! jQuery ( "#mark" ) . is ( ".link" ) , "Check for class: Did not expect class 'link'" ) ;
assert . ok ( jQuery ( "#simon" ) . is ( ".blog.link" ) , "Check for multiple classes: Expected classes 'blog' and 'link'" ) ;
assert . ok ( ! jQuery ( "#simon" ) . is ( ".blogTest" ) , "Check for multiple classes: Expected classes 'blog' and 'link', but not 'blogTest'" ) ;
assert . ok ( jQuery ( "#en" ) . is ( "[lang=\"en\"]" ) , "Check for attribute: Expected attribute lang to be 'en'" ) ;
assert . ok ( ! jQuery ( "#en" ) . is ( "[lang=\"de\"]" ) , "Check for attribute: Expected attribute lang to be 'en', not 'de'" ) ;
assert . ok ( jQuery ( "#text1" ) . is ( "[type=\"text\"]" ) , "Check for attribute: Expected attribute type to be 'text'" ) ;
assert . ok ( ! jQuery ( "#text1" ) . is ( "[type=\"radio\"]" ) , "Check for attribute: Expected attribute type to be 'text', not 'radio'" ) ;
assert . ok ( jQuery ( "#text2" ) . is ( ":disabled" ) , "Check for pseudoclass: Expected to be disabled" ) ;
assert . ok ( ! jQuery ( "#text1" ) . is ( ":disabled" ) , "Check for pseudoclass: Expected not disabled" ) ;
assert . ok ( jQuery ( "#radio2" ) . is ( ":checked" ) , "Check for pseudoclass: Expected to be checked" ) ;
assert . ok ( ! jQuery ( "#radio1" ) . is ( ":checked" ) , "Check for pseudoclass: Expected not checked" ) ;
2013-02-27 20:44:34 +00:00
// test is() with comma-separated expressions
2015-08-16 06:59:58 +00:00
assert . ok ( jQuery ( "#en" ) . is ( "[lang=\"en\"],[lang=\"de\"]" ) , "Comma-separated; Check for lang attribute: Expect en or de" ) ;
assert . ok ( jQuery ( "#en" ) . is ( "[lang=\"de\"],[lang=\"en\"]" ) , "Comma-separated; Check for lang attribute: Expect en or de" ) ;
assert . ok ( jQuery ( "#en" ) . is ( "[lang=\"en\"] , [lang=\"de\"]" ) , "Comma-separated; Check for lang attribute: Expect en or de" ) ;
assert . ok ( jQuery ( "#en" ) . is ( "[lang=\"de\"] , [lang=\"en\"]" ) , "Comma-separated; Check for lang attribute: Expect en or de" ) ;
2019-06-26 19:39:10 +00:00
link . title = "Don't click me" ;
assert . ok ( jQuery ( link ) . is ( "[rel='bookmark']" ) , "attribute-equals string (delimited via apostrophes)" ) ;
assert . ok ( jQuery ( link ) . is ( "[rel=bookmark]" ) , "attribute-equals identifier" ) ;
assert . ok ( jQuery ( link ) . is ( "[\nrel = bookmark\t]" ) ,
"attribute-equals identifier (whitespace ignored)" ) ;
assert . ok ( jQuery ( link ) . is ( "a[title=\"Don't click me\"]" ) ,
"attribute-equals string containing single quote" ) ;
// jQuery trac-12303
input . setAttribute ( "data-pos" , ":first" ) ;
assert . ok ( jQuery ( input ) . is ( "input[data-pos=\\:first]" ) ,
"attribute-equals POS in identifier" ) ;
assert . ok ( jQuery ( input ) . is ( "input[data-pos=':first']" ) ,
"attribute-equals POS in string" ) ;
2019-07-29 19:14:46 +00:00
if ( QUnit . jQuerySelectors ) {
2019-06-26 19:39:10 +00:00
assert . ok ( jQuery ( input ) . is ( ":input[data-pos=':first']" ) ,
"attribute-equals POS in string after pseudo" ) ;
} else {
assert . ok ( "skip" , ":input not supported in selector-native" ) ;
}
option . setAttribute ( "test" , "" ) ;
assert . ok ( jQuery ( option ) . is ( "[id=option1a]" ) ,
"id attribute-equals identifier" ) ;
2019-07-29 19:14:46 +00:00
if ( QUnit . jQuerySelectors ) {
2019-06-26 19:39:10 +00:00
assert . ok ( jQuery ( option ) . is ( "[id*=option1][type!=checkbox]" ) ,
"attribute-not-equals identifier" ) ;
} else {
assert . ok ( "skip" , "attribute-not-equals not supported in selector-native" ) ;
}
assert . ok ( jQuery ( option ) . is ( "[id*=option1]" ) , "attribute-contains identifier" ) ;
assert . ok ( ! jQuery ( option ) . is ( "[test^='']" ) ,
"attribute-starts-with empty string (negative)" ) ;
option . className = "=]" ;
assert . ok ( jQuery ( option ) . is ( ".\\=\\]" ) ,
"class selector with attribute-equals confusable" ) ;
assert . ok ( jQuery ( disconnected ) . is ( "div" ) , "disconnected element" ) ;
assert . ok ( jQuery ( link ) . is ( "* > *" ) , "child combinator matches in document" ) ;
assert . ok ( ! jQuery ( disconnected ) . is ( "* > *" ) , "child combinator fails in fragment" ) ;
2015-08-16 06:59:58 +00:00
} ) ;
2011-09-12 23:40:14 +00:00
2022-01-04 15:27:18 +00:00
QUnit . test ( "is() against non-elements (trac-10178)" , function ( assert ) {
2015-08-16 06:59:58 +00:00
assert . expect ( 14 ) ;
2013-03-27 01:20:27 +00:00
var label , i , test ,
collection = jQuery ( document ) ,
tests = [ "a" , "*" ] ,
nonelements = {
2015-08-16 06:59:58 +00:00
text : document . createTextNode ( "" ) ,
comment : document . createComment ( "" ) ,
2013-03-27 01:20:27 +00:00
document : document ,
window : window ,
array : [ ] ,
"plain object" : { } ,
"function" : function ( ) { }
} ;
for ( label in nonelements ) {
collection [ 0 ] = nonelements [ label ] ;
for ( i = 0 ; i < tests . length ; i ++ ) {
test = tests [ i ] ;
2015-08-16 03:45:28 +00:00
assert . ok ( ! collection . is ( test ) , label + " does not match \"" + test + "\"" ) ;
2013-03-27 01:20:27 +00:00
}
}
2015-08-16 06:59:58 +00:00
} ) ;
QUnit . test ( "is(jQuery)" , function ( assert ) {
assert . expect ( 19 ) ;
assert . ok ( jQuery ( "#form" ) . is ( jQuery ( "form" ) ) , "Check for element: A form is a form" ) ;
assert . ok ( ! jQuery ( "#form" ) . is ( jQuery ( "div" ) ) , "Check for element: A form is not a div" ) ;
assert . ok ( jQuery ( "#mark" ) . is ( jQuery ( ".blog" ) ) , "Check for class: Expected class 'blog'" ) ;
assert . ok ( ! jQuery ( "#mark" ) . is ( jQuery ( ".link" ) ) , "Check for class: Did not expect class 'link'" ) ;
assert . ok ( jQuery ( "#simon" ) . is ( jQuery ( ".blog.link" ) ) , "Check for multiple classes: Expected classes 'blog' and 'link'" ) ;
assert . ok ( ! jQuery ( "#simon" ) . is ( jQuery ( ".blogTest" ) ) , "Check for multiple classes: Expected classes 'blog' and 'link', but not 'blogTest'" ) ;
assert . ok ( jQuery ( "#en" ) . is ( jQuery ( "[lang=\"en\"]" ) ) , "Check for attribute: Expected attribute lang to be 'en'" ) ;
assert . ok ( ! jQuery ( "#en" ) . is ( jQuery ( "[lang=\"de\"]" ) ) , "Check for attribute: Expected attribute lang to be 'en', not 'de'" ) ;
assert . ok ( jQuery ( "#text1" ) . is ( jQuery ( "[type=\"text\"]" ) ) , "Check for attribute: Expected attribute type to be 'text'" ) ;
assert . ok ( ! jQuery ( "#text1" ) . is ( jQuery ( "[type=\"radio\"]" ) ) , "Check for attribute: Expected attribute type to be 'text', not 'radio'" ) ;
assert . ok ( ! jQuery ( "#text1" ) . is ( jQuery ( "input:disabled" ) ) , "Check for pseudoclass: Expected not disabled" ) ;
assert . ok ( jQuery ( "#radio2" ) . is ( jQuery ( "input:checked" ) ) , "Check for pseudoclass: Expected to be checked" ) ;
assert . ok ( ! jQuery ( "#radio1" ) . is ( jQuery ( "input:checked" ) ) , "Check for pseudoclass: Expected not checked" ) ;
2011-08-05 14:02:33 +00:00
2011-03-23 20:04:12 +00:00
// Some raw elements
2015-08-16 06:59:58 +00:00
assert . ok ( jQuery ( "#form" ) . is ( jQuery ( "#qunit-fixture form" ) [ 0 ] ) , "Check for element: A form is a form" ) ;
assert . ok ( ! jQuery ( "#form" ) . is ( jQuery ( "div" ) [ 0 ] ) , "Check for element: A form is not a div" ) ;
assert . ok ( jQuery ( "#mark" ) . is ( jQuery ( ".blog" ) [ 0 ] ) , "Check for class: Expected class 'blog'" ) ;
assert . ok ( ! jQuery ( "#mark" ) . is ( jQuery ( ".link" ) [ 0 ] ) , "Check for class: Did not expect class 'link'" ) ;
assert . ok ( jQuery ( "#simon" ) . is ( jQuery ( ".blog.link" ) [ 0 ] ) , "Check for multiple classes: Expected classes 'blog' and 'link'" ) ;
assert . ok ( ! jQuery ( "#simon" ) . is ( jQuery ( ".blogTest" ) [ 0 ] ) , "Check for multiple classes: Expected classes 'blog' and 'link', but not 'blogTest'" ) ;
} ) ;
2011-01-24 21:18:19 +00:00
2019-07-29 19:14:46 +00:00
QUnit [ QUnit . jQuerySelectors ? "test" : "skip" ] ( "is() with :has() selectors" , function ( assert ) {
2015-08-16 06:59:58 +00:00
assert . expect ( 6 ) ;
2013-02-19 04:52:29 +00:00
2015-08-16 06:59:58 +00:00
assert . ok ( jQuery ( "#foo" ) . is ( ":has(p)" ) , "Check for child: Expected a child 'p' element" ) ;
assert . ok ( ! jQuery ( "#foo" ) . is ( ":has(ul)" ) , "Check for child: Did not expect 'ul' element" ) ;
assert . ok ( jQuery ( "#foo" ) . is ( ":has(p):has(a):has(code)" ) , "Check for childs: Expected 'p', 'a' and 'code' child elements" ) ;
assert . ok ( ! jQuery ( "#foo" ) . is ( ":has(p):has(a):has(code):has(ol)" ) , "Check for childs: Expected 'p', 'a' and 'code' child elements, but no 'ol'" ) ;
2013-02-19 04:52:29 +00:00
2015-08-16 06:59:58 +00:00
assert . ok ( jQuery ( "#foo" ) . is ( jQuery ( "div:has(p)" ) ) , "Check for child: Expected a child 'p' element" ) ;
assert . ok ( ! jQuery ( "#foo" ) . is ( jQuery ( "div:has(ul)" ) ) , "Check for child: Did not expect 'ul' element" ) ;
} ) ;
2013-02-19 04:52:29 +00:00
2019-07-29 19:14:46 +00:00
QUnit [ QUnit . jQuerySelectorsPos ? "test" : "skip" ] ( "is() with positional selectors" , function ( assert ) {
2015-08-16 06:59:58 +00:00
assert . expect ( 27 ) ;
2013-04-20 15:40:27 +00:00
var
posp = jQuery (
"<p id='posp'><a class='firsta' href='#'><em>first</em></a>" +
"<a class='seconda' href='#'><b>test</b></a><em></em></p>"
) . appendTo ( "#qunit-fixture" ) ,
isit = function ( sel , match , expect ) {
2015-08-16 03:45:28 +00:00
assert . equal (
2013-04-20 15:40:27 +00:00
jQuery ( sel ) . is ( match ) ,
expect ,
"jQuery('" + sel + "').is('" + match + "')"
) ;
} ;
2011-09-20 03:50:52 +00:00
2013-04-20 15:40:27 +00:00
isit ( "#posp" , "p:last" , true ) ;
2011-09-20 03:50:52 +00:00
isit ( "#posp" , "#posp:first" , true ) ;
isit ( "#posp" , "#posp:eq(2)" , false ) ;
isit ( "#posp" , "#posp a:first" , false ) ;
isit ( "#posp .firsta" , "#posp a:first" , true ) ;
isit ( "#posp .firsta" , "#posp a:last" , false ) ;
isit ( "#posp .firsta" , "#posp a:even" , true ) ;
isit ( "#posp .firsta" , "#posp a:odd" , false ) ;
isit ( "#posp .firsta" , "#posp a:eq(0)" , true ) ;
isit ( "#posp .firsta" , "#posp a:eq(9)" , false ) ;
isit ( "#posp .firsta" , "#posp em:eq(0)" , false ) ;
isit ( "#posp .firsta" , "#posp em:first" , false ) ;
isit ( "#posp .firsta" , "#posp:first" , false ) ;
isit ( "#posp .seconda" , "#posp a:first" , false ) ;
isit ( "#posp .seconda" , "#posp a:last" , true ) ;
isit ( "#posp .seconda" , "#posp a:gt(0)" , true ) ;
isit ( "#posp .seconda" , "#posp a:lt(5)" , true ) ;
isit ( "#posp .seconda" , "#posp a:lt(1)" , false ) ;
isit ( "#posp em" , "#posp a:eq(0) em" , true ) ;
isit ( "#posp em" , "#posp a:lt(1) em" , true ) ;
isit ( "#posp em" , "#posp a:gt(1) em" , false ) ;
isit ( "#posp em" , "#posp a:first em" , true ) ;
isit ( "#posp em" , "#posp a em:last" , true ) ;
isit ( "#posp em" , "#posp a em:eq(2)" , false ) ;
2022-01-04 15:27:18 +00:00
assert . ok ( jQuery ( "#option1b" ) . is ( "#select1 option:not(:first)" ) , "POS inside of :not() (trac-10970)" ) ;
2013-04-20 15:40:27 +00:00
2022-01-04 15:27:18 +00:00
assert . ok ( jQuery ( posp [ 0 ] ) . is ( "p:last" ) , "context constructed from a single node (trac-13797)" ) ;
assert . ok ( ! jQuery ( posp [ 0 ] ) . find ( "#firsta" ) . is ( "a:first" ) , "context derived from a single node (trac-13797)" ) ;
2015-08-16 06:59:58 +00:00
} ) ;
2011-09-20 03:50:52 +00:00
2015-08-16 06:59:58 +00:00
QUnit . test ( "index()" , function ( assert ) {
2015-08-16 03:45:28 +00:00
assert . expect ( 2 ) ;
2009-12-10 17:25:25 +00:00
2015-08-16 06:59:58 +00:00
assert . equal ( jQuery ( "#text2" ) . index ( ) , 2 , "Returns the index of a child amongst its siblings" ) ;
2011-08-05 14:02:33 +00:00
2020-03-16 20:49:29 +00:00
assert . equal ( jQuery ( "<div></div>" ) . index ( ) , - 1 , "Node without parent returns -1" ) ;
2015-08-16 06:59:58 +00:00
} ) ;
2009-12-10 17:25:25 +00:00
2015-08-16 06:59:58 +00:00
QUnit . test ( "index(Object|String|undefined)" , function ( assert ) {
assert . expect ( 16 ) ;
2009-12-10 17:25:25 +00:00
2015-08-16 06:59:58 +00:00
var elements = jQuery ( [ window , document ] ) ,
inputElements = jQuery ( "#radio1,#radio2,#check1,#check2" ) ;
2009-12-10 17:25:25 +00:00
// Passing a node
2015-08-16 06:59:58 +00:00
assert . equal ( elements . index ( window ) , 0 , "Check for index of elements" ) ;
assert . equal ( elements . index ( document ) , 1 , "Check for index of elements" ) ;
assert . equal ( inputElements . index ( document . getElementById ( "radio1" ) ) , 0 , "Check for index of elements" ) ;
assert . equal ( inputElements . index ( document . getElementById ( "radio2" ) ) , 1 , "Check for index of elements" ) ;
assert . equal ( inputElements . index ( document . getElementById ( "check1" ) ) , 2 , "Check for index of elements" ) ;
assert . equal ( inputElements . index ( document . getElementById ( "check2" ) ) , 3 , "Check for index of elements" ) ;
assert . equal ( inputElements . index ( window ) , - 1 , "Check for not found index" ) ;
assert . equal ( inputElements . index ( document ) , - 1 , "Check for not found index" ) ;
2009-12-10 17:25:25 +00:00
// Passing a jQuery object
// enabled since [5500]
2015-08-16 03:45:28 +00:00
assert . equal ( elements . index ( elements ) , 0 , "Pass in a jQuery object" ) ;
2015-08-16 06:59:58 +00:00
assert . equal ( elements . index ( elements . eq ( 1 ) ) , 1 , "Pass in a jQuery object" ) ;
assert . equal ( jQuery ( "#form input[type='radio']" ) . index ( jQuery ( "#radio2" ) ) , 1 , "Pass in a jQuery object" ) ;
2009-12-10 17:25:25 +00:00
// Passing a selector or nothing
// enabled since [6330]
2015-08-16 06:59:58 +00:00
assert . equal ( jQuery ( "#text2" ) . index ( ) , 2 , "Check for index amongst siblings" ) ;
assert . equal ( jQuery ( "#form" ) . children ( ) . eq ( 4 ) . index ( ) , 4 , "Check for index amongst siblings" ) ;
assert . equal ( jQuery ( "#radio2" ) . index ( "#form input[type='radio']" ) , 1 , "Check for index within a selector" ) ;
assert . equal ( jQuery ( "#form input[type='radio']" ) . index ( jQuery ( "#radio2" ) ) , 1 , "Check for index within a selector" ) ;
assert . equal ( jQuery ( "#radio2" ) . index ( "#form input[type='text']" ) , - 1 , "Check for index not found within a selector" ) ;
} ) ;
QUnit . test ( "filter(Selector|undefined)" , function ( assert ) {
assert . expect ( 9 ) ;
assert . deepEqual ( jQuery ( "#form input" ) . filter ( ":checked" ) . get ( ) , q ( "radio2" , "check1" ) , "filter(String)" ) ;
assert . deepEqual ( jQuery ( "p" ) . filter ( "#ap, #sndp" ) . get ( ) , q ( "ap" , "sndp" ) , "filter('String, String')" ) ;
assert . deepEqual ( jQuery ( "p" ) . filter ( "#ap,#sndp" ) . get ( ) , q ( "ap" , "sndp" ) , "filter('String,String')" ) ;
assert . deepEqual ( jQuery ( "p" ) . filter ( null ) . get ( ) , [ ] , "filter(null) should return an empty jQuery object" ) ;
assert . deepEqual ( jQuery ( "p" ) . filter ( undefined ) . get ( ) , [ ] , "filter(undefined) should return an empty jQuery object" ) ;
assert . deepEqual ( jQuery ( "p" ) . filter ( 0 ) . get ( ) , [ ] , "filter(0) should return an empty jQuery object" ) ;
assert . deepEqual ( jQuery ( "p" ) . filter ( "" ) . get ( ) , [ ] , "filter('') should return an empty jQuery object" ) ;
2009-03-18 21:15:38 +00:00
// using contents will get comments regular, text, and comment nodes
2015-08-16 06:59:58 +00:00
var j = jQuery ( "#nonnodes" ) . contents ( ) ;
assert . equal ( j . filter ( "span" ) . length , 1 , "Check node,textnode,comment to filter the one span" ) ;
assert . equal ( j . filter ( "[name]" ) . length , 0 , "Check node,textnode,comment to filter the one span" ) ;
} ) ;
2009-03-18 21:15:38 +00:00
2015-08-16 06:59:58 +00:00
QUnit . test ( "filter(Function)" , function ( assert ) {
assert . expect ( 2 ) ;
2009-12-10 06:03:14 +00:00
2015-08-16 06:59:58 +00:00
assert . deepEqual ( jQuery ( "#qunit-fixture p" ) . filter ( function ( ) {
return ! jQuery ( "a" , this ) . length ;
} ) . get ( ) , q ( "sndp" , "first" ) , "filter(Function)" ) ;
2009-07-16 07:32:11 +00:00
2015-08-16 06:59:58 +00:00
assert . deepEqual ( jQuery ( "#qunit-fixture p" ) . filter ( function ( i , elem ) { return ! jQuery ( "a" , elem ) . length ; } ) . get ( ) , q ( "sndp" , "first" ) , "filter(Function) using arg" ) ;
} ) ;
2009-07-16 07:32:11 +00:00
2015-08-16 06:59:58 +00:00
QUnit . test ( "filter(Element)" , function ( assert ) {
assert . expect ( 1 ) ;
2009-07-16 07:32:11 +00:00
2015-08-16 06:59:58 +00:00
var element = document . getElementById ( "text1" ) ;
assert . deepEqual ( jQuery ( "#form input" ) . filter ( element ) . get ( ) , q ( "text1" ) , "filter(Element)" ) ;
} ) ;
2009-07-16 07:32:11 +00:00
2015-08-16 06:59:58 +00:00
QUnit . test ( "filter(Array)" , function ( assert ) {
assert . expect ( 1 ) ;
2009-07-16 07:32:11 +00:00
2015-08-16 06:59:58 +00:00
var elements = [ document . getElementById ( "text1" ) ] ;
assert . deepEqual ( jQuery ( "#form input" ) . filter ( elements ) . get ( ) , q ( "text1" ) , "filter(Element)" ) ;
} ) ;
2009-07-16 07:32:11 +00:00
2015-08-16 06:59:58 +00:00
QUnit . test ( "filter(jQuery)" , function ( assert ) {
assert . expect ( 1 ) ;
2011-09-20 03:14:37 +00:00
2015-08-16 06:59:58 +00:00
var elements = jQuery ( "#text1" ) ;
assert . deepEqual ( jQuery ( "#form input" ) . filter ( elements ) . get ( ) , q ( "text1" ) , "filter(Element)" ) ;
} ) ;
2011-09-20 03:14:37 +00:00
2019-07-29 19:14:46 +00:00
QUnit [ QUnit . jQuerySelectorsPos ? "test" : "skip" ] ( "filter() with positional selectors" , function ( assert ) {
2015-08-16 06:59:58 +00:00
assert . expect ( 19 ) ;
2011-09-20 03:14:37 +00:00
2015-08-16 06:59:58 +00:00
var filterit = function ( sel , filter , length ) {
2015-08-16 03:45:28 +00:00
assert . equal ( jQuery ( sel ) . filter ( filter ) . length , length , "jQuery( " + sel + " ).filter( " + filter + " )" ) ;
2013-04-08 22:18:45 +00:00
} ;
jQuery ( "" +
2012-10-16 14:17:14 +00:00
"<p id='posp'>" +
"<a class='firsta' href='#'>" +
"<em>first</em>" +
"</a>" +
"<a class='seconda' href='#'>" +
"<b>test</b>" +
"</a>" +
"<em></em>" +
2013-04-08 22:18:45 +00:00
"</p>" ) . appendTo ( "#qunit-fixture" ) ;
2011-09-20 03:14:37 +00:00
2015-08-16 06:59:58 +00:00
filterit ( "#posp" , "#posp:first" , 1 ) ;
2011-09-20 03:14:37 +00:00
filterit ( "#posp" , "#posp:eq(2)" , 0 ) ;
filterit ( "#posp" , "#posp a:first" , 0 ) ;
// Keep in mind this is within the selection and
// not in relation to other elements (.is() is a different story)
filterit ( "#posp .firsta" , "#posp a:first" , 1 ) ;
filterit ( "#posp .firsta" , "#posp a:last" , 1 ) ;
filterit ( "#posp .firsta" , "#posp a:last-child" , 0 ) ;
filterit ( "#posp .firsta" , "#posp a:even" , 1 ) ;
filterit ( "#posp .firsta" , "#posp a:odd" , 0 ) ;
filterit ( "#posp .firsta" , "#posp a:eq(0)" , 1 ) ;
filterit ( "#posp .firsta" , "#posp a:eq(9)" , 0 ) ;
filterit ( "#posp .firsta" , "#posp em:eq(0)" , 0 ) ;
filterit ( "#posp .firsta" , "#posp em:first" , 0 ) ;
filterit ( "#posp .firsta" , "#posp:first" , 0 ) ;
filterit ( "#posp .seconda" , "#posp a:first" , 1 ) ;
filterit ( "#posp .seconda" , "#posp em:first" , 0 ) ;
filterit ( "#posp .seconda" , "#posp a:last" , 1 ) ;
filterit ( "#posp .seconda" , "#posp a:gt(0)" , 0 ) ;
filterit ( "#posp .seconda" , "#posp a:lt(5)" , 1 ) ;
filterit ( "#posp .seconda" , "#posp a:lt(1)" , 1 ) ;
2015-08-16 06:59:58 +00:00
} ) ;
2009-07-16 07:32:11 +00:00
2015-08-16 06:59:58 +00:00
QUnit . test ( "closest()" , function ( assert ) {
2016-01-12 05:56:29 +00:00
assert . expect ( 14 ) ;
2013-01-27 18:24:50 +00:00
var jq ;
2012-07-25 20:05:48 +00:00
2015-08-16 06:59:58 +00:00
assert . deepEqual ( jQuery ( "body" ) . closest ( "body" ) . get ( ) , q ( "body" ) , "closest(body)" ) ;
assert . deepEqual ( jQuery ( "body" ) . closest ( "html" ) . get ( ) , q ( "html" ) , "closest(html)" ) ;
assert . deepEqual ( jQuery ( "body" ) . closest ( "div" ) . get ( ) , [ ] , "closest(div)" ) ;
assert . deepEqual ( jQuery ( "#qunit-fixture" ) . closest ( "span,#html" ) . get ( ) , q ( "html" ) , "closest(span,#html)" ) ;
2009-03-18 21:15:38 +00:00
2009-07-28 12:28:59 +00:00
// Test .closest() limited by the context
2015-08-16 06:59:58 +00:00
jq = jQuery ( "#nothiddendivchild" ) ;
assert . deepEqual ( jq . closest ( "html" , document . body ) . get ( ) , [ ] , "Context limited." ) ;
assert . deepEqual ( jq . closest ( "body" , document . body ) . get ( ) , [ ] , "Context limited." ) ;
assert . deepEqual ( jq . closest ( "#nothiddendiv" , document . body ) . get ( ) , q ( "nothiddendiv" ) , "Context not reached." ) ;
2010-12-30 06:34:48 +00:00
2010-06-21 17:50:02 +00:00
//Test that .closest() returns unique'd set
2015-08-16 06:59:58 +00:00
assert . equal ( jQuery ( "#qunit-fixture p" ) . closest ( "#qunit-fixture" ) . length , 1 , "Closest should return a unique set" ) ;
2010-10-11 11:45:15 +00:00
// Test on disconnected node
2015-08-16 06:59:58 +00:00
assert . equal ( jQuery ( "<div><p></p></div>" ) . find ( "p" ) . closest ( "table" ) . length , 0 , "Make sure disconnected closest work." ) ;
2011-03-31 03:39:19 +00:00
2016-01-12 05:56:29 +00:00
assert . deepEqual (
jQuery ( "#firstp" ) . closest ( q ( "qunit-fixture" ) ) . get ( ) ,
q ( "qunit-fixture" ) ,
"Non-string match target"
) ;
2022-01-04 15:27:18 +00:00
// Bug trac-7369
2015-08-16 06:59:58 +00:00
assert . equal ( jQuery ( "<div foo='bar'></div>" ) . closest ( "[foo]" ) . length , 1 , "Disconnected nodes with attribute selector" ) ;
assert . equal ( jQuery ( "<div>text</div>" ) . closest ( "[lang]" ) . length , 0 , "Disconnected nodes with text and non-existent attribute selector" ) ;
2012-07-25 20:05:48 +00:00
2015-08-16 06:59:58 +00:00
assert . ok ( ! jQuery ( document ) . closest ( "#foo" ) . length , "Calling closest on a document fails silently" ) ;
2013-01-27 18:24:50 +00:00
2015-08-16 06:59:58 +00:00
jq = jQuery ( "<div>text</div>" ) ;
2022-01-04 15:27:18 +00:00
assert . deepEqual ( jq . contents ( ) . closest ( "*" ) . get ( ) , jq . get ( ) , "Text node input (trac-13332)" ) ;
2015-08-16 06:59:58 +00:00
} ) ;
2009-03-18 21:15:38 +00:00
2019-07-29 19:14:46 +00:00
QUnit [ QUnit . jQuerySelectorsPos ? "test" : "skip" ] ( "closest() with positional selectors" , function ( assert ) {
2016-01-12 05:56:29 +00:00
assert . expect ( 3 ) ;
assert . deepEqual ( jQuery ( "#qunit-fixture" ) . closest ( "div:first" ) . get ( ) , [ ] ,
"closest(div:first)" ) ;
assert . deepEqual ( jQuery ( "#qunit-fixture div" ) . closest ( "body:first div:last" ) . get ( ) , [ ] ,
"closest(body:first div:last)" ) ;
assert . deepEqual (
jQuery ( "#qunit-fixture div" ) . closest ( "body:first div:last" , document ) . get ( ) ,
[ ] ,
"closest(body:first div:last, document)"
) ;
2015-08-16 06:59:58 +00:00
} ) ;
QUnit . test ( "closest(jQuery)" , function ( assert ) {
assert . expect ( 8 ) ;
var $child = jQuery ( "#nothiddendivchild" ) ,
$parent = jQuery ( "#nothiddendiv" ) ,
$sibling = jQuery ( "#foo" ) ,
$body = jQuery ( "body" ) ;
assert . ok ( $child . closest ( $parent ) . is ( "#nothiddendiv" ) , "closest( jQuery('#nothiddendiv') )" ) ;
assert . ok ( $child . closest ( $parent [ 0 ] ) . is ( "#nothiddendiv" ) , "closest( jQuery('#nothiddendiv') ) :: node" ) ;
assert . ok ( $child . closest ( $child ) . is ( "#nothiddendivchild" ) , "child is included" ) ;
assert . ok ( $child . closest ( $child [ 0 ] ) . is ( "#nothiddendivchild" ) , "child is included :: node" ) ;
assert . equal ( $child . closest ( document . createElement ( "div" ) ) . length , 0 , "created element is not related" ) ;
2015-08-16 03:45:28 +00:00
assert . equal ( $child . closest ( $sibling ) . length , 0 , "Sibling not a parent of child" ) ;
2015-08-16 06:59:58 +00:00
assert . equal ( $child . closest ( $sibling [ 0 ] ) . length , 0 , "Sibling not a parent of child :: node" ) ;
assert . ok ( $child . closest ( $body . add ( $parent ) ) . is ( "#nothiddendiv" ) , "Closest ancestor retrieved." ) ;
} ) ;
2023-02-13 17:34:41 +00:00
// Support: IE 11+
// IE doesn't support complex selectors inside `:not()`.
QUnit . testUnlessIE ( "not(Selector)" , function ( assert ) {
2015-11-10 18:26:15 +00:00
assert . expect ( 7 ) ;
2015-08-16 06:59:58 +00:00
assert . equal ( jQuery ( "#qunit-fixture > p#ap > a" ) . not ( "#google" ) . length , 2 , "not('selector')" ) ;
2016-01-29 18:07:28 +00:00
assert . deepEqual (
jQuery ( "#qunit-fixture p" ) . not ( ".result" ) . get ( ) ,
q (
"firstp" ,
"ap" ,
"sndp" ,
"en" ,
"sap" ,
"first"
) ,
"not('.class')"
) ;
assert . deepEqual (
jQuery ( "#qunit-fixture p" ) . not ( "#ap, #sndp, .result" ) . get ( ) ,
q (
"firstp" ,
"en" ,
"sap" ,
"first"
) ,
"not('selector, selector')"
) ;
2015-08-16 06:59:58 +00:00
assert . deepEqual ( jQuery ( "#ap *" ) . not ( "code" ) . get ( ) , q ( "google" , "groups" , "anchor1" , "mark" ) , "not('tag selector')" ) ;
assert . deepEqual ( jQuery ( "#ap *" ) . not ( "code, #mark" ) . get ( ) , q ( "google" , "groups" , "anchor1" ) , "not('tag, ID selector')" ) ;
assert . deepEqual ( jQuery ( "#ap *" ) . not ( "#mark, code" ) . get ( ) , q ( "google" , "groups" , "anchor1" ) , "not('ID, tag selector')" ) ;
2023-02-13 17:34:41 +00:00
if ( QUnit . jQuerySelectors ) {
assert . deepEqual (
jQuery ( "#form option" ) . not ( "option.emptyopt:contains('Nothing'),optgroup *,[value='1']" ) . get ( ) ,
q ( "option1c" , "option1d" , "option2c" , "option2d" , "option3c" , "option3d" , "option3e" , "option4d" , "option4e" , "option5a" , "option5b" ) ,
"not('complex selector')"
) ;
} else {
assert . ok ( "skip" , ":contains not supported in selector-native" ) ;
}
2015-08-16 06:59:58 +00:00
} ) ;
2009-07-16 07:32:11 +00:00
2015-11-10 18:26:15 +00:00
QUnit . test ( "not(undefined)" , function ( assert ) {
assert . expect ( 4 ) ;
var all = jQuery ( "p" ) . get ( ) ;
assert . deepEqual ( jQuery ( "p" ) . not ( null ) . get ( ) , all , "not(null) should have no effect" ) ;
assert . deepEqual ( jQuery ( "p" ) . not ( undefined ) . get ( ) , all , "not(undefined) should have no effect" ) ;
assert . deepEqual ( jQuery ( "p" ) . not ( 0 ) . get ( ) , all , "not(0) should have no effect" ) ;
assert . deepEqual ( jQuery ( "p" ) . not ( "" ) . get ( ) , all , "not('') should have no effect" ) ;
} ) ;
2015-08-16 06:59:58 +00:00
QUnit . test ( "not(Element)" , function ( assert ) {
assert . expect ( 1 ) ;
2009-07-16 07:32:11 +00:00
2015-08-16 06:59:58 +00:00
var selects = jQuery ( "#form select" ) ;
assert . deepEqual ( selects . not ( selects [ 1 ] ) . get ( ) , q ( "select1" , "select3" , "select4" , "select5" ) , "filter out DOM element" ) ;
} ) ;
2009-03-18 21:15:38 +00:00
2015-08-16 06:59:58 +00:00
QUnit . test ( "not(Function)" , function ( assert ) {
assert . expect ( 1 ) ;
2012-10-15 16:18:14 +00:00
2015-08-16 06:59:58 +00:00
assert . deepEqual ( jQuery ( "#qunit-fixture p" ) . not ( function ( ) { return jQuery ( "a" , this ) . length ; } ) . get ( ) , q ( "sndp" , "first" ) , "not(Function)" ) ;
} ) ;
2009-03-18 21:15:38 +00:00
2015-08-16 06:59:58 +00:00
QUnit . test ( "not(Array)" , function ( assert ) {
assert . expect ( 2 ) ;
2009-07-16 07:32:11 +00:00
2015-08-16 06:59:58 +00:00
assert . equal ( jQuery ( "#qunit-fixture > p#ap > a" ) . not ( document . getElementById ( "google" ) ) . length , 2 , "not(DOMElement)" ) ;
assert . equal ( jQuery ( "p" ) . not ( document . getElementsByTagName ( "p" ) ) . length , 0 , "not(Array-like DOM collection)" ) ;
} ) ;
2009-07-16 07:32:11 +00:00
2015-08-16 06:59:58 +00:00
QUnit . test ( "not(jQuery)" , function ( assert ) {
2015-08-16 03:45:28 +00:00
assert . expect ( 1 ) ;
2009-07-16 07:32:11 +00:00
2016-01-31 09:09:48 +00:00
assert . deepEqual (
jQuery ( "#qunit-fixture p" ) . not ( jQuery ( "#ap, #sndp, .result" ) ) . get ( ) ,
q ( "firstp" , "en" , "sap" , "first" ) ,
"not(jQuery)"
) ;
2015-08-16 06:59:58 +00:00
} ) ;
2009-12-09 20:43:13 +00:00
2023-02-13 17:34:41 +00:00
// Support: IE 11+
// IE doesn't support complex selectors inside `:not()`.
QUnit . testUnlessIE ( "not(Selector) excludes non-element nodes (gh-2808)" , function ( assert ) {
2016-01-11 19:59:33 +00:00
assert . expect ( 3 ) ;
var mixedContents = jQuery ( "#nonnodes" ) . contents ( ) ,
childElements = q ( "nonnodesElement" ) ;
assert . deepEqual ( mixedContents . not ( "*" ) . get ( ) , [ ] , "not *" ) ;
assert . deepEqual ( mixedContents . not ( "[id=a],[id=b]" ) . get ( ) , childElements , "not [id=a],[id=b]" ) ;
assert . deepEqual ( mixedContents . not ( "[id=a],*,[id=b]" ) . get ( ) , [ ] , "not [id=a],*,[id=b]" ) ;
} ) ;
2016-08-02 20:41:34 +00:00
QUnit . test ( "not(arraylike) passes non-element nodes (gh-3226)" , function ( assert ) {
assert . expect ( 5 ) ;
var mixedContents = jQuery ( "<span id='nonnodesElement'>hi</span> there <!-- mon ami -->" ) ,
mixedLength = mixedContents . length ,
firstElement = mixedContents . first ( ) ;
assert . deepEqual ( mixedContents . not ( mixedContents ) . get ( ) , [ ] , "not everything" ) ;
assert . deepEqual ( mixedContents . not ( firstElement ) . length , mixedLength - 1 , "not firstElement" ) ;
assert . deepEqual ( mixedContents . not ( [ firstElement [ 0 ] . nextSibling ] ) . length , mixedLength - 1 , "not textnode array" ) ;
assert . deepEqual ( mixedContents . not ( firstElement [ 0 ] . nextSibling ) . length , mixedLength - 1 , "not textnode" ) ;
assert . deepEqual ( mixedContents . not ( document . body ) . get ( ) , mixedContents . get ( ) , "not with unmatched element" ) ;
} ) ;
2015-08-16 06:59:58 +00:00
QUnit . test ( "has(Element)" , function ( assert ) {
assert . expect ( 3 ) ;
2013-04-09 15:45:09 +00:00
var obj , detached , multipleParent ;
2009-12-09 20:43:13 +00:00
2015-08-16 06:59:58 +00:00
obj = jQuery ( "#qunit-fixture" ) . has ( jQuery ( "#sndp" ) [ 0 ] ) ;
assert . deepEqual ( obj . get ( ) , q ( "qunit-fixture" ) , "Keeps elements that have the element as a descendant" ) ;
2009-12-09 20:43:13 +00:00
2020-03-16 20:49:29 +00:00
detached = jQuery ( "<a><b><i></i></b></a>" ) ;
2015-08-16 06:59:58 +00:00
assert . deepEqual ( detached . has ( detached . find ( "i" ) [ 0 ] ) . get ( ) , detached . get ( ) , "...Even when detached" ) ;
2012-04-02 17:12:57 +00:00
2015-08-16 06:59:58 +00:00
multipleParent = jQuery ( "#qunit-fixture, #header" ) . has ( jQuery ( "#sndp" ) [ 0 ] ) ;
assert . deepEqual ( multipleParent . get ( ) , q ( "qunit-fixture" ) , "Does not include elements that do not have the element as a descendant" ) ;
} ) ;
2009-12-09 20:43:13 +00:00
2015-08-16 06:59:58 +00:00
QUnit . test ( "has(Selector)" , function ( assert ) {
2015-08-16 03:45:28 +00:00
assert . expect ( 5 ) ;
2009-12-09 20:43:13 +00:00
2013-04-09 15:45:09 +00:00
var obj , detached , multipleParent , multipleHas ;
2015-08-16 06:59:58 +00:00
obj = jQuery ( "#qunit-fixture" ) . has ( "#sndp" ) ;
assert . deepEqual ( obj . get ( ) , q ( "qunit-fixture" ) , "Keeps elements that have any element matching the selector as a descendant" ) ;
2009-12-09 20:43:13 +00:00
2020-03-16 20:49:29 +00:00
detached = jQuery ( "<a><b><i></i></b></a>" ) ;
2015-08-16 06:59:58 +00:00
assert . deepEqual ( detached . has ( "i" ) . get ( ) , detached . get ( ) , "...Even when detached" ) ;
2012-04-02 17:12:57 +00:00
2015-08-16 06:59:58 +00:00
multipleParent = jQuery ( "#qunit-fixture, #header" ) . has ( "#sndp" ) ;
assert . deepEqual ( multipleParent . get ( ) , q ( "qunit-fixture" ) , "Does not include elements that do not have the element as a descendant" ) ;
2012-07-27 22:19:01 +00:00
2015-08-16 06:59:58 +00:00
multipleParent = jQuery ( "#select1, #select2, #select3" ) . has ( "#option1a, #option3a" ) ;
assert . deepEqual ( multipleParent . get ( ) , q ( "select1" , "select3" ) , "Multiple contexts are checks correctly" ) ;
2009-12-09 20:43:13 +00:00
2015-08-16 06:59:58 +00:00
multipleHas = jQuery ( "#qunit-fixture" ) . has ( "#sndp, #first" ) ;
assert . deepEqual ( multipleHas . get ( ) , q ( "qunit-fixture" ) , "Only adds elements once" ) ;
} ) ;
2009-12-09 20:43:13 +00:00
2015-08-16 06:59:58 +00:00
QUnit . test ( "has(Arrayish)" , function ( assert ) {
assert . expect ( 4 ) ;
2009-12-09 20:43:13 +00:00
2013-04-09 15:45:09 +00:00
var simple , detached , multipleParent , multipleHas ;
2015-08-16 06:59:58 +00:00
simple = jQuery ( "#qunit-fixture" ) . has ( jQuery ( "#sndp" ) ) ;
assert . deepEqual ( simple . get ( ) , q ( "qunit-fixture" ) , "Keeps elements that have any element in the jQuery list as a descendant" ) ;
2020-03-16 20:49:29 +00:00
detached = jQuery ( "<a><b><i></i></b></a>" ) ;
2015-08-16 06:59:58 +00:00
assert . deepEqual ( detached . has ( detached . find ( "i" ) ) . get ( ) , detached . get ( ) , "...Even when detached" ) ;
multipleParent = jQuery ( "#qunit-fixture, #header" ) . has ( jQuery ( "#sndp" ) ) ;
assert . deepEqual ( multipleParent . get ( ) , q ( "qunit-fixture" ) , "Does not include elements that do not have an element in the jQuery list as a descendant" ) ;
multipleHas = jQuery ( "#qunit-fixture" ) . has ( jQuery ( "#sndp, #first" ) ) ;
assert . deepEqual ( multipleHas . get ( ) , q ( "qunit-fixture" ) , "Only adds elements once" ) ;
} ) ;
QUnit . test ( "addBack()" , function ( assert ) {
assert . expect ( 5 ) ;
assert . deepEqual ( jQuery ( "#en" ) . siblings ( ) . addBack ( ) . get ( ) , q ( "sndp" , "en" , "sap" ) , "Check for siblings and self" ) ;
assert . deepEqual ( jQuery ( "#foo" ) . children ( ) . addBack ( ) . get ( ) , q ( "foo" , "sndp" , "en" , "sap" ) , "Check for children and self" ) ;
assert . deepEqual ( jQuery ( "#sndp, #en" ) . parent ( ) . addBack ( ) . get ( ) , q ( "foo" , "sndp" , "en" ) , "Check for parent and self" ) ;
assert . deepEqual ( jQuery ( "#groups" ) . parents ( "p, div" ) . addBack ( ) . get ( ) , q ( "qunit-fixture" , "ap" , "groups" ) , "Check for parents and self" ) ;
assert . deepEqual ( jQuery ( "#select1 > option" ) . filter ( ":first-child" ) . addBack ( ":last-child" ) . get ( ) , q ( "option1a" , "option1d" ) , "Should contain the last elems plus the *filtered* prior set elements" ) ;
} ) ;
QUnit . test ( "siblings([String])" , function ( assert ) {
assert . expect ( 6 ) ;
assert . deepEqual ( jQuery ( "#en" ) . siblings ( ) . get ( ) , q ( "sndp" , "sap" ) , "Check for siblings" ) ;
assert . deepEqual ( jQuery ( "#nonnodes" ) . contents ( ) . eq ( 1 ) . siblings ( ) . get ( ) , q ( "nonnodesElement" ) , "Check for text node siblings" ) ;
2019-06-26 19:39:10 +00:00
assert . deepEqual (
jQuery ( "#foo" ) . siblings ( "form, b" ) . get ( ) ,
q ( "form" , "floatTest" , "lengthtest" , "name-tests" , "testForm" , "disabled-tests" ) ,
"Check for multiple filters"
) ;
2015-08-16 06:59:58 +00:00
var set = q ( "sndp" , "en" , "sap" ) ;
assert . deepEqual ( jQuery ( "#en, #sndp" ) . siblings ( ) . get ( ) , set , "Check for unique results from siblings" ) ;
2022-01-04 15:27:18 +00:00
assert . deepEqual ( jQuery ( "#option5a" ) . siblings ( "option[data-attr]" ) . get ( ) , q ( "option5c" ) , "Has attribute selector in siblings (trac-9261)" ) ;
assert . equal ( jQuery ( "<a></a>" ) . siblings ( ) . length , 0 , "Detached elements have no siblings (trac-11370)" ) ;
2015-08-16 06:59:58 +00:00
} ) ;
2019-07-29 19:14:46 +00:00
QUnit [ QUnit . jQuerySelectors ? "test" : "skip" ] ( "siblings([String])" , function ( assert ) {
2015-08-16 06:59:58 +00:00
assert . expect ( 2 ) ;
assert . deepEqual ( jQuery ( "#sndp" ) . siblings ( ":has(code)" ) . get ( ) , q ( "sap" ) , "Check for filtered siblings (has code child element)" ) ;
assert . deepEqual ( jQuery ( "#sndp" ) . siblings ( ":has(a)" ) . get ( ) , q ( "en" , "sap" ) , "Check for filtered siblings (has anchor child element)" ) ;
} ) ;
QUnit . test ( "children([String])" , function ( assert ) {
assert . expect ( 2 ) ;
assert . deepEqual ( jQuery ( "#foo" ) . children ( ) . get ( ) , q ( "sndp" , "en" , "sap" ) , "Check for children" ) ;
assert . deepEqual ( jQuery ( "#foo" ) . children ( "#en, #sap" ) . get ( ) , q ( "en" , "sap" ) , "Check for multiple filters" ) ;
} ) ;
2019-07-29 19:14:46 +00:00
QUnit [ QUnit . jQuerySelectors ? "test" : "skip" ] ( "children([String])" , function ( assert ) {
2015-08-16 06:59:58 +00:00
assert . expect ( 1 ) ;
assert . deepEqual ( jQuery ( "#foo" ) . children ( ":has(code)" ) . get ( ) , q ( "sndp" , "sap" ) , "Check for filtered children" ) ;
} ) ;
QUnit . test ( "parent([String])" , function ( assert ) {
assert . expect ( 6 ) ;
2013-01-27 18:24:50 +00:00
var $el ;
2015-08-16 06:59:58 +00:00
assert . equal ( jQuery ( "#groups" ) . parent ( ) [ 0 ] . id , "ap" , "Simple parent check" ) ;
assert . equal ( jQuery ( "#groups" ) . parent ( "p" ) [ 0 ] . id , "ap" , "Filtered parent check" ) ;
assert . equal ( jQuery ( "#groups" ) . parent ( "div" ) . length , 0 , "Filtered parent check, no match" ) ;
assert . equal ( jQuery ( "#groups" ) . parent ( "div, p" ) [ 0 ] . id , "ap" , "Check for multiple filters" ) ;
assert . deepEqual ( jQuery ( "#en, #sndp" ) . parent ( ) . get ( ) , q ( "foo" ) , "Check for unique results from parent" ) ;
2013-01-27 18:24:50 +00:00
2015-08-16 06:59:58 +00:00
$el = jQuery ( "<div>text</div>" ) ;
2022-01-04 15:27:18 +00:00
assert . deepEqual ( $el . contents ( ) . parent ( ) . get ( ) , $el . get ( ) , "Check for parent of text node (trac-13265)" ) ;
2015-08-16 06:59:58 +00:00
} ) ;
QUnit . test ( "parents([String])" , function ( assert ) {
assert . expect ( 6 ) ;
assert . equal ( jQuery ( "#groups" ) . parents ( ) [ 0 ] . id , "ap" , "Simple parents check" ) ;
assert . deepEqual ( jQuery ( "#nonnodes" ) . contents ( ) . eq ( 1 ) . parents ( ) . eq ( 0 ) . get ( ) , q ( "nonnodes" ) , "Text node parents check" ) ;
assert . equal ( jQuery ( "#groups" ) . parents ( "p" ) [ 0 ] . id , "ap" , "Filtered parents check" ) ;
assert . equal ( jQuery ( "#groups" ) . parents ( "div" ) [ 0 ] . id , "qunit-fixture" , "Filtered parents check2" ) ;
assert . deepEqual ( jQuery ( "#groups" ) . parents ( "p, div" ) . get ( ) , q ( "ap" , "qunit-fixture" ) , "Check for multiple filters" ) ;
2017-08-01 16:52:45 +00:00
assert . deepEqual ( jQuery ( "#en, #sndp" ) . parents ( ) . get ( ) , q ( "foo" , "qunit-fixture" , "body" , "html" ) , "Check for unique results from parents" ) ;
2015-08-16 06:59:58 +00:00
} ) ;
QUnit . test ( "parentsUntil([String])" , function ( assert ) {
assert . expect ( 10 ) ;
var parents = jQuery ( "#groups" ) . parents ( ) ;
assert . deepEqual ( jQuery ( "#groups" ) . parentsUntil ( ) . get ( ) , parents . get ( ) , "parentsUntil with no selector (nextAll)" ) ;
assert . deepEqual ( jQuery ( "#groups" ) . parentsUntil ( ".foo" ) . get ( ) , parents . get ( ) , "parentsUntil with invalid selector (nextAll)" ) ;
assert . deepEqual ( jQuery ( "#groups" ) . parentsUntil ( "#html" ) . get ( ) , parents . slice ( 0 , - 1 ) . get ( ) , "Simple parentsUntil check" ) ;
assert . equal ( jQuery ( "#groups" ) . parentsUntil ( "#ap" ) . length , 0 , "Simple parentsUntil check" ) ;
assert . deepEqual ( jQuery ( "#nonnodes" ) . contents ( ) . eq ( 1 ) . parentsUntil ( "#html" ) . eq ( 0 ) . get ( ) , q ( "nonnodes" ) , "Text node parentsUntil check" ) ;
2017-08-01 16:52:45 +00:00
assert . deepEqual ( jQuery ( "#groups" ) . parentsUntil ( "#html, #body" ) . get ( ) , parents . slice ( 0 , 2 ) . get ( ) , "Less simple parentsUntil check" ) ;
2015-08-16 06:59:58 +00:00
assert . deepEqual ( jQuery ( "#groups" ) . parentsUntil ( "#html" , "div" ) . get ( ) , jQuery ( "#qunit-fixture" ) . get ( ) , "Filtered parentsUntil check" ) ;
2017-08-01 16:52:45 +00:00
assert . deepEqual ( jQuery ( "#groups" ) . parentsUntil ( "#html" , "p,div" ) . get ( ) , parents . slice ( 0 , 2 ) . get ( ) , "Multiple-filtered parentsUntil check" ) ;
2015-08-16 06:59:58 +00:00
assert . equal ( jQuery ( "#groups" ) . parentsUntil ( "#html" , "span" ) . length , 0 , "Filtered parentsUntil check, no match" ) ;
2017-08-01 16:52:45 +00:00
assert . deepEqual ( jQuery ( "#groups, #ap" ) . parentsUntil ( "#html" , "p,div" ) . get ( ) , parents . slice ( 0 , 2 ) . get ( ) , "Multi-source, multiple-filtered parentsUntil check" ) ;
2015-08-16 06:59:58 +00:00
} ) ;
QUnit . test ( "next([String])" , function ( assert ) {
assert . expect ( 6 ) ;
assert . equal ( jQuery ( "#ap" ) . next ( ) [ 0 ] . id , "foo" , "Simple next check" ) ;
assert . equal ( jQuery ( "<div>text<a id='element'></a></div>" ) . contents ( ) . eq ( 0 ) . next ( ) . attr ( "id" ) , "element" , "Text node next check" ) ;
assert . equal ( jQuery ( "#ap" ) . next ( "div" ) [ 0 ] . id , "foo" , "Filtered next check" ) ;
assert . equal ( jQuery ( "#ap" ) . next ( "p" ) . length , 0 , "Filtered next check, no match" ) ;
assert . equal ( jQuery ( "#ap" ) . next ( "div, p" ) [ 0 ] . id , "foo" , "Multiple filters" ) ;
assert . equal ( jQuery ( "body" ) . next ( ) . length , 0 , "Simple next check, no match" ) ;
} ) ;
QUnit . test ( "prev([String])" , function ( assert ) {
assert . expect ( 5 ) ;
assert . equal ( jQuery ( "#foo" ) . prev ( ) [ 0 ] . id , "ap" , "Simple prev check" ) ;
assert . deepEqual ( jQuery ( "#nonnodes" ) . contents ( ) . eq ( 1 ) . prev ( ) . get ( ) , q ( "nonnodesElement" ) , "Text node prev check" ) ;
assert . equal ( jQuery ( "#foo" ) . prev ( "p" ) [ 0 ] . id , "ap" , "Filtered prev check" ) ;
assert . equal ( jQuery ( "#foo" ) . prev ( "div" ) . length , 0 , "Filtered prev check, no match" ) ;
assert . equal ( jQuery ( "#foo" ) . prev ( "p, div" ) [ 0 ] . id , "ap" , "Multiple filters" ) ;
} ) ;
QUnit . test ( "nextAll([String])" , function ( assert ) {
assert . expect ( 5 ) ;
var elems = jQuery ( "#form" ) . children ( ) ;
assert . deepEqual ( jQuery ( "#label-for" ) . nextAll ( ) . get ( ) , elems . slice ( 1 ) . get ( ) , "Simple nextAll check" ) ;
assert . equal ( jQuery ( "<div>text<a id='element'></a></div>" ) . contents ( ) . eq ( 0 ) . nextAll ( ) . attr ( "id" ) , "element" , "Text node nextAll check" ) ;
assert . deepEqual ( jQuery ( "#label-for" ) . nextAll ( "input" ) . get ( ) , elems . slice ( 1 ) . filter ( "input" ) . get ( ) , "Filtered nextAll check" ) ;
assert . deepEqual ( jQuery ( "#label-for" ) . nextAll ( "input,select" ) . get ( ) , elems . slice ( 1 ) . filter ( "input,select" ) . get ( ) , "Multiple-filtered nextAll check" ) ;
assert . deepEqual ( jQuery ( "#label-for, #hidden1" ) . nextAll ( "input,select" ) . get ( ) , elems . slice ( 1 ) . filter ( "input,select" ) . get ( ) , "Multi-source, multiple-filtered nextAll check" ) ;
} ) ;
QUnit . test ( "prevAll([String])" , function ( assert ) {
assert . expect ( 5 ) ;
var elems = jQuery ( jQuery ( "#form" ) . children ( ) . slice ( 0 , 12 ) . get ( ) . reverse ( ) ) ;
assert . deepEqual ( jQuery ( "#area1" ) . prevAll ( ) . get ( ) , elems . get ( ) , "Simple prevAll check" ) ;
assert . deepEqual ( jQuery ( "#nonnodes" ) . contents ( ) . eq ( 1 ) . prevAll ( ) . get ( ) , q ( "nonnodesElement" ) , "Text node prevAll check" ) ;
assert . deepEqual ( jQuery ( "#area1" ) . prevAll ( "input" ) . get ( ) , elems . filter ( "input" ) . get ( ) , "Filtered prevAll check" ) ;
assert . deepEqual ( jQuery ( "#area1" ) . prevAll ( "input,select" ) . get ( ) , elems . filter ( "input,select" ) . get ( ) , "Multiple-filtered prevAll check" ) ;
assert . deepEqual ( jQuery ( "#area1, #hidden1" ) . prevAll ( "input,select" ) . get ( ) , elems . filter ( "input,select" ) . get ( ) , "Multi-source, multiple-filtered prevAll check" ) ;
} ) ;
QUnit . test ( "nextUntil([String])" , function ( assert ) {
assert . expect ( 12 ) ;
var elems = jQuery ( "#form" ) . children ( ) . slice ( 2 , 12 ) ;
assert . deepEqual ( jQuery ( "#text1" ) . nextUntil ( ) . get ( ) , jQuery ( "#text1" ) . nextAll ( ) . get ( ) , "nextUntil with no selector (nextAll)" ) ;
assert . equal ( jQuery ( "<div>text<a id='element'></a></div>" ) . contents ( ) . eq ( 0 ) . nextUntil ( ) . attr ( "id" ) , "element" , "Text node nextUntil with no selector (nextAll)" ) ;
assert . deepEqual ( jQuery ( "#text1" ) . nextUntil ( ".foo" ) . get ( ) , jQuery ( "#text1" ) . nextAll ( ) . get ( ) , "nextUntil with invalid selector (nextAll)" ) ;
assert . deepEqual ( jQuery ( "#text1" ) . nextUntil ( "#area1" ) . get ( ) , elems . get ( ) , "Simple nextUntil check" ) ;
assert . equal ( jQuery ( "#text1" ) . nextUntil ( "#text2" ) . length , 0 , "Simple nextUntil check" ) ;
assert . deepEqual ( jQuery ( "#text1" ) . nextUntil ( "#area1, #radio1" ) . get ( ) , jQuery ( "#text1" ) . next ( ) . get ( ) , "Less simple nextUntil check" ) ;
assert . deepEqual ( jQuery ( "#text1" ) . nextUntil ( "#area1" , "input" ) . get ( ) , elems . not ( "button" ) . get ( ) , "Filtered nextUntil check" ) ;
assert . deepEqual ( jQuery ( "#text1" ) . nextUntil ( "#area1" , "button" ) . get ( ) , elems . not ( "input" ) . get ( ) , "Filtered nextUntil check" ) ;
assert . deepEqual ( jQuery ( "#text1" ) . nextUntil ( "#area1" , "button,input" ) . get ( ) , elems . get ( ) , "Multiple-filtered nextUntil check" ) ;
assert . equal ( jQuery ( "#text1" ) . nextUntil ( "#area1" , "div" ) . length , 0 , "Filtered nextUntil check, no match" ) ;
assert . deepEqual ( jQuery ( "#text1, #hidden1" ) . nextUntil ( "#area1" , "button,input" ) . get ( ) , elems . get ( ) , "Multi-source, multiple-filtered nextUntil check" ) ;
assert . deepEqual ( jQuery ( "#text1" ) . nextUntil ( "[class=foo]" ) . get ( ) , jQuery ( "#text1" ) . nextAll ( ) . get ( ) , "Non-element nodes must be skipped, since they have no attributes" ) ;
} ) ;
QUnit . test ( "prevUntil([String])" , function ( assert ) {
assert . expect ( 11 ) ;
var elems = jQuery ( "#area1" ) . prevAll ( ) ;
assert . deepEqual ( jQuery ( "#area1" ) . prevUntil ( ) . get ( ) , elems . get ( ) , "prevUntil with no selector (prevAll)" ) ;
assert . deepEqual ( jQuery ( "#nonnodes" ) . contents ( ) . eq ( 1 ) . prevUntil ( ) . get ( ) , q ( "nonnodesElement" ) , "Text node prevUntil with no selector (prevAll)" ) ;
assert . deepEqual ( jQuery ( "#area1" ) . prevUntil ( ".foo" ) . get ( ) , elems . get ( ) , "prevUntil with invalid selector (prevAll)" ) ;
assert . deepEqual ( jQuery ( "#area1" ) . prevUntil ( "label" ) . get ( ) , elems . slice ( 0 , - 1 ) . get ( ) , "Simple prevUntil check" ) ;
assert . equal ( jQuery ( "#area1" ) . prevUntil ( "#button" ) . length , 0 , "Simple prevUntil check" ) ;
assert . deepEqual ( jQuery ( "#area1" ) . prevUntil ( "label, #search" ) . get ( ) , jQuery ( "#area1" ) . prev ( ) . get ( ) , "Less simple prevUntil check" ) ;
assert . deepEqual ( jQuery ( "#area1" ) . prevUntil ( "label" , "input" ) . get ( ) , elems . slice ( 0 , - 1 ) . not ( "button" ) . get ( ) , "Filtered prevUntil check" ) ;
assert . deepEqual ( jQuery ( "#area1" ) . prevUntil ( "label" , "button" ) . get ( ) , elems . slice ( 0 , - 1 ) . not ( "input" ) . get ( ) , "Filtered prevUntil check" ) ;
assert . deepEqual ( jQuery ( "#area1" ) . prevUntil ( "label" , "button,input" ) . get ( ) , elems . slice ( 0 , - 1 ) . get ( ) , "Multiple-filtered prevUntil check" ) ;
assert . equal ( jQuery ( "#area1" ) . prevUntil ( "label" , "div" ) . length , 0 , "Filtered prevUntil check, no match" ) ;
assert . deepEqual ( jQuery ( "#area1, #hidden1" ) . prevUntil ( "label" , "button,input" ) . get ( ) , elems . slice ( 0 , - 1 ) . get ( ) , "Multi-source, multiple-filtered prevUntil check" ) ;
} ) ;
QUnit . test ( "contents()" , function ( assert ) {
assert . expect ( 12 ) ;
2013-04-09 15:45:09 +00:00
var ibody , c ;
2015-08-16 06:59:58 +00:00
assert . equal ( jQuery ( "#ap" ) . contents ( ) . length , 9 , "Check element contents" ) ;
assert . ok ( jQuery ( "#iframe" ) . contents ( ) [ 0 ] , "Check existence of IFrame document" ) ;
ibody = jQuery ( "#loadediframe" ) . contents ( ) [ 0 ] . body ;
2015-08-16 03:45:28 +00:00
assert . ok ( ibody , "Check existence of IFrame body" ) ;
2009-03-18 21:15:38 +00:00
2015-08-16 06:59:58 +00:00
assert . equal ( jQuery ( "span" , ibody ) . text ( ) , "span text" , "Find span in IFrame and check its text" ) ;
2009-03-18 21:15:38 +00:00
2015-08-16 06:59:58 +00:00
jQuery ( ibody ) . append ( "<div>init text</div>" ) ;
assert . equal ( jQuery ( "div" , ibody ) . length , 2 , "Check the original div and the new div are in IFrame" ) ;
2009-03-18 21:15:38 +00:00
2015-08-16 06:59:58 +00:00
assert . equal ( jQuery ( "div" , ibody ) . last ( ) . text ( ) , "init text" , "Add text to div in IFrame" ) ;
2009-03-18 21:15:38 +00:00
2015-08-16 06:59:58 +00:00
jQuery ( "div" , ibody ) . last ( ) . text ( "div text" ) ;
assert . equal ( jQuery ( "div" , ibody ) . last ( ) . text ( ) , "div text" , "Add text to div in IFrame" ) ;
2009-03-18 21:15:38 +00:00
2015-08-16 06:59:58 +00:00
jQuery ( "div" , ibody ) . last ( ) . remove ( ) ;
assert . equal ( jQuery ( "div" , ibody ) . length , 1 , "Delete the div and check only one div left in IFrame" ) ;
2009-03-18 21:15:38 +00:00
2015-08-16 06:59:58 +00:00
assert . equal ( jQuery ( "div" , ibody ) . text ( ) , "span text" , "Make sure the correct div is still left after deletion in IFrame" ) ;
2009-03-18 21:15:38 +00:00
2020-03-16 20:49:29 +00:00
jQuery ( "<table></table>" , ibody ) . append ( "<tr><td>cell</td></tr>" ) . appendTo ( ibody ) ;
2015-08-16 06:59:58 +00:00
jQuery ( "table" , ibody ) . remove ( ) ;
assert . equal ( jQuery ( "div" , ibody ) . length , 1 , "Check for JS error on add and delete of a table in IFrame" ) ;
2009-03-18 21:15:38 +00:00
// using contents will get comments regular, text, and comment nodes
2015-08-16 06:59:58 +00:00
c = jQuery ( "#nonnodes" ) . contents ( ) . contents ( ) ;
2015-08-16 03:45:28 +00:00
assert . equal ( c . length , 1 , "Check node,textnode,comment contents is just one" ) ;
2015-08-16 06:59:58 +00:00
assert . equal ( c [ 0 ] . nodeValue , "hi" , "Check node,textnode,comment contents is just the one from span" ) ;
} ) ;
2010-01-23 21:54:24 +00:00
2017-01-29 22:32:15 +00:00
QUnit . test ( "contents() for <template />" , function ( assert ) {
2018-05-14 17:36:30 +00:00
assert . expect ( 4 ) ;
2017-01-29 22:32:15 +00:00
2018-05-14 17:36:30 +00:00
jQuery ( "#qunit-fixture" ) . append (
"<template id='template'>" +
" <div id='template-div0'>" +
" <span>Hello, Web Component!</span>" +
" </div>" +
" <div id='template-div1'></div>" +
" <div id='template-div2'></div>" +
"</template>"
) ;
2017-01-29 22:32:15 +00:00
2018-05-14 17:36:30 +00:00
var contents = jQuery ( "#template" ) . contents ( ) ;
assert . equal ( contents . length , 6 , "Check template element contents" ) ;
2017-01-29 22:32:15 +00:00
2018-05-14 17:36:30 +00:00
assert . equal ( contents . find ( "span" ) . text ( ) , "Hello, Web Component!" , "Find span in template and check its text" ) ;
2017-01-29 22:32:15 +00:00
2020-03-16 20:49:29 +00:00
jQuery ( "<div id='templateTest'></div>" ) . append (
2018-05-14 17:36:30 +00:00
jQuery ( jQuery . map ( contents , function ( node ) {
return document . importNode ( node , true ) ;
} ) )
) . appendTo ( "#qunit-fixture" ) ;
2017-01-29 22:32:15 +00:00
2018-05-14 17:36:30 +00:00
contents = jQuery ( "#templateTest" ) . contents ( ) ;
assert . equal ( contents . length , 6 , "Check cloned nodes of template element contents" ) ;
2017-01-29 22:32:15 +00:00
2018-05-14 17:36:30 +00:00
assert . equal ( contents . filter ( "div" ) . length , 3 , "Count cloned elements from template" ) ;
2017-01-29 22:32:15 +00:00
} ) ;
2019-05-13 19:39:56 +00:00
QUnit . testUnlessIE ( "contents() for <template /> remains inert" , function ( assert ) {
2018-05-14 17:36:30 +00:00
assert . expect ( 2 ) ;
2017-01-29 22:32:15 +00:00
2018-05-14 17:36:30 +00:00
Globals . register ( "testScript" ) ;
Globals . register ( "testImgOnload" ) ;
2017-01-29 22:32:15 +00:00
2018-05-14 17:36:30 +00:00
jQuery ( "#qunit-fixture" ) . append (
"<template id='template'>" +
" <script>testScript = 1;</script>" +
" <img src='" + baseURL + "1x1.jpg' onload='testImgOnload = 1' >" +
"</template>"
) ;
2017-01-29 22:32:15 +00:00
2018-05-14 17:36:30 +00:00
var content = jQuery ( "#template" ) . contents ( ) ;
2017-01-29 22:32:15 +00:00
2018-05-14 17:36:30 +00:00
assert . strictEqual ( window . testScript , true , "script in template isn't executed" ) ;
assert . strictEqual ( window . testImgOnload , true , "onload of image in template isn't executed" ) ;
} ) ;
QUnit . test ( "contents() for <object />" , function ( assert ) {
assert . expect ( 2 ) ;
var svgObject = jQuery ( "<object id='svg-object' data='" + baseURL + "1x1.svg'></object>" ) ;
var done = assert . async ( ) ;
svgObject . on ( "load" , function ( ) {
var contents = jQuery ( "#svg-object" ) . contents ( ) ;
assert . equal ( contents . length , 1 , "Check object contents" ) ;
assert . equal ( contents . find ( "svg" ) . length , 1 , "Find svg within object" ) ;
done ( ) ;
} ) ;
jQuery ( "#qunit-fixture" ) . append ( svgObject ) ;
} ) ;
2019-05-06 17:23:00 +00:00
QUnit . test ( "contents() for <object /> with children" , function ( assert ) {
assert . expect ( 1 ) ;
var object = "<object type='application/x-shockwave-flash' width='200' height='300' id='penguin'>" +
"<param name='movie' value='flash/penguin.swf'>" +
"<param name='quality' value='high'>" +
"<img src='images/penguin.jpg' width='200' height='300' alt='Penguin'>" +
"</object>" ;
var contents = jQuery ( object ) . contents ( ) ;
assert . equal ( contents . length , 3 , "Check object contents children are correct" ) ;
} ) ;
2018-05-14 17:36:30 +00:00
QUnit . test ( "contents() for <frame />" , function ( assert ) {
assert . expect ( 2 ) ;
var iframe = jQuery ( "<iframe id='frame-contents' src='" + baseURL + "frame.html'></iframe>" ) ;
var done = assert . async ( ) ;
iframe . on ( "load" , function ( ) {
var container = jQuery ( "#frame-contents" ) . contents ( ) ;
var contents = container . find ( "#test-frame" ) . contents ( ) ;
assert . equal ( contents . length , 1 , "Check frame contents" ) ;
assert . equal ( contents . find ( "body" ) . length , 1 , "Find body within frame" ) ;
done ( ) ;
} ) ;
jQuery ( "#qunit-fixture" ) . append ( iframe ) ;
} ) ;
2017-01-29 22:32:15 +00:00
2015-08-16 06:59:58 +00:00
QUnit . test ( "sort direction" , function ( assert ) {
2015-08-16 03:45:28 +00:00
assert . expect ( 12 ) ;
2013-04-24 15:38:23 +00:00
2015-08-16 06:59:58 +00:00
var elems = jQuery ( "#ap, #select1 > *, #moretests > form" ) ,
2013-04-24 15:38:23 +00:00
methodDirections = {
parent : false ,
parents : true ,
parentsUntil : true ,
next : false ,
2013-05-01 15:33:06 +00:00
prev : false ,
2013-04-24 15:38:23 +00:00
nextAll : false ,
prevAll : true ,
nextUntil : false ,
prevUntil : true ,
siblings : false ,
children : false ,
contents : false
} ;
jQuery . each ( methodDirections , function ( method , reversed ) {
var actual = elems [ method ] ( ) . get ( ) ,
2015-05-04 22:27:12 +00:00
forward = jQuery . uniqueSort ( [ ] . concat ( actual ) ) ;
2015-08-16 03:45:28 +00:00
assert . deepEqual ( actual , reversed ? forward . reverse ( ) : forward , "Correct sort direction for " + method ) ;
2015-08-16 06:59:58 +00:00
} ) ;
} ) ;
2013-04-24 15:38:23 +00:00
2015-08-16 06:59:58 +00:00
QUnit . test ( "add(String selector)" , function ( assert ) {
2015-08-16 03:45:28 +00:00
assert . expect ( 2 ) ;
2013-04-09 15:45:09 +00:00
2013-12-14 01:10:46 +00:00
var divs ;
2011-04-22 04:51:23 +00:00
2015-08-16 03:45:28 +00:00
assert . deepEqual (
2015-08-16 06:59:58 +00:00
jQuery ( "#sndp" ) . add ( "#en" ) . add ( "#sap" ) . toArray ( ) ,
q ( "sndp" , "en" , "sap" ) ,
2013-12-14 01:10:46 +00:00
"Check elements from document"
) ;
2010-01-23 21:54:24 +00:00
2020-03-16 20:49:29 +00:00
divs = jQuery ( "<div></div>" ) . add ( "#sndp" ) ;
2015-08-16 06:59:58 +00:00
assert . ok ( divs [ 0 ] . parentNode , "Sort with the disconnected node last (started with disconnected first)." ) ;
} ) ;
2013-12-14 01:10:46 +00:00
2015-08-16 06:59:58 +00:00
QUnit . test ( "add(String selector, String context)" , function ( assert ) {
2015-08-16 03:45:28 +00:00
assert . expect ( 1 ) ;
2013-12-14 01:10:46 +00:00
2015-08-16 03:45:28 +00:00
assert . deepEqual (
2015-08-16 06:59:58 +00:00
jQuery ( [ ] ) . add ( "div" , "#nothiddendiv" ) . toArray ( ) ,
q ( "nothiddendivchild" ) ,
2013-12-14 01:10:46 +00:00
"Check elements from document"
) ;
2015-08-16 06:59:58 +00:00
} ) ;
2013-12-14 01:10:46 +00:00
2015-08-16 06:59:58 +00:00
QUnit . test ( "add(String html)" , function ( assert ) {
2015-08-16 03:45:28 +00:00
assert . expect ( 3 ) ;
2013-12-14 01:10:46 +00:00
var x ,
2020-03-16 20:49:29 +00:00
divs = jQuery ( "#sndp" ) . add ( "<div></div>" ) ;
2010-01-23 21:54:24 +00:00
2015-08-16 06:59:58 +00:00
assert . ok ( ! divs [ 1 ] . parentNode , "Sort with the disconnected node last." ) ;
2010-01-23 21:54:24 +00:00
2015-08-16 06:59:58 +00:00
x = jQuery ( [ ] ) . add ( "<p id='x1'>xxx</p>" ) . add ( "<p id='x2'>xxx</p>" ) ;
assert . equal ( x [ 0 ] . id , "x1" , "Check detached element1" ) ;
assert . equal ( x [ 1 ] . id , "x2" , "Check detached element2" ) ;
} ) ;
2010-01-23 21:54:24 +00:00
2015-08-16 06:59:58 +00:00
QUnit . test ( "add(jQuery)" , function ( assert ) {
2015-08-16 03:45:28 +00:00
assert . expect ( 4 ) ;
2013-12-14 01:10:46 +00:00
var x ,
2020-03-16 20:49:29 +00:00
tmp = jQuery ( "<div></div>" ) ;
2013-12-14 01:10:46 +00:00
2015-08-16 06:59:58 +00:00
x = jQuery ( [ ] )
2013-12-14 01:10:46 +00:00
. add (
2015-08-16 06:59:58 +00:00
jQuery ( "<p id='x1'>xxx</p>" ) . appendTo ( tmp )
2013-12-14 01:10:46 +00:00
)
. add (
2015-08-16 06:59:58 +00:00
jQuery ( "<p id='x2'>xxx</p>" ) . appendTo ( tmp )
2013-12-14 01:10:46 +00:00
) ;
2015-08-16 06:59:58 +00:00
assert . equal ( x [ 0 ] . id , "x1" , "Check element1 in detached parent" ) ;
assert . equal ( x [ 1 ] . id , "x2" , "Check element2 in detached parent" ) ;
2013-12-14 01:10:46 +00:00
2015-08-16 06:59:58 +00:00
x = jQuery ( [ ] )
2013-12-14 01:10:46 +00:00
. add (
2015-08-16 06:59:58 +00:00
jQuery ( "<p id='x1'>xxx</p>" )
2013-12-14 01:10:46 +00:00
)
. add (
2015-08-16 06:59:58 +00:00
jQuery ( "<p id='x2'>xxx</p>" )
2013-12-14 01:10:46 +00:00
) ;
2015-08-16 06:59:58 +00:00
assert . equal ( x [ 0 ] . id , "x1" , "Check detached element1" ) ;
assert . equal ( x [ 1 ] . id , "x2" , "Check detached element2" ) ;
} ) ;
2013-12-14 01:10:46 +00:00
2015-08-16 06:59:58 +00:00
QUnit . test ( "add(Element)" , function ( assert ) {
2015-08-16 03:45:28 +00:00
assert . expect ( 2 ) ;
2013-12-14 01:10:46 +00:00
var x ,
2020-03-16 20:49:29 +00:00
tmp = jQuery ( "<div></div>" ) ;
2010-01-23 21:54:24 +00:00
2015-08-16 06:59:58 +00:00
x = jQuery ( [ ] ) . add ( jQuery ( "<p id='x1'>xxx</p>" ) . appendTo ( tmp ) [ 0 ] ) . add ( jQuery ( "<p id='x2'>xxx</p>" ) . appendTo ( tmp ) [ 0 ] ) ;
assert . equal ( x [ 0 ] . id , "x1" , "Check on-the-fly element1" ) ;
assert . equal ( x [ 1 ] . id , "x2" , "Check on-the-fly element2" ) ;
} ) ;
2010-01-23 21:54:24 +00:00
2015-08-16 06:59:58 +00:00
QUnit . test ( "add(Array elements)" , function ( assert ) {
2015-08-16 03:45:28 +00:00
assert . expect ( 1 ) ;
2010-01-23 21:54:24 +00:00
2015-08-16 03:45:28 +00:00
assert . deepEqual (
2015-08-16 06:59:58 +00:00
jQuery ( "#sndp" ) . add ( jQuery ( "#en" ) [ 0 ] ) . add ( jQuery ( "#sap" ) ) . toArray ( ) ,
q ( "sndp" , "en" , "sap" ) ,
2013-12-14 01:10:46 +00:00
"Check elements from document"
) ;
2015-08-16 06:59:58 +00:00
} ) ;
2013-12-14 01:10:46 +00:00
2015-08-16 06:59:58 +00:00
QUnit . test ( "add(Window)" , function ( assert ) {
2015-08-16 03:45:28 +00:00
assert . expect ( 1 ) ;
2013-12-14 01:10:46 +00:00
var frame1 = document . createElement ( "iframe" ) ,
frame2 = document . createElement ( "iframe" ) ;
// This increases window.length and sets window[i] available
document . body . appendChild ( frame1 ) ;
document . body . appendChild ( frame2 ) ;
2010-01-23 21:54:24 +00:00
2013-12-14 01:10:46 +00:00
// Window is tricky because it is a lot like an array, even Array#slice will
// turn it into a multi-item array.
2015-08-16 06:59:58 +00:00
assert . equal ( jQuery ( [ ] ) . add ( window ) . length , 1 , "Add a window" ) ;
2013-12-14 01:10:46 +00:00
document . body . removeChild ( frame1 ) ;
document . body . removeChild ( frame2 ) ;
2015-08-16 06:59:58 +00:00
} ) ;
2013-12-14 01:10:46 +00:00
2015-08-16 06:59:58 +00:00
QUnit . test ( "add(NodeList|undefined|HTMLFormElement|HTMLSelectElement)" , function ( assert ) {
2015-08-16 03:45:28 +00:00
assert . expect ( 4 ) ;
2013-12-14 01:10:46 +00:00
var ps , notDefined ;
2015-08-16 06:59:58 +00:00
ps = document . getElementsByTagName ( "p" ) ;
2013-12-14 01:10:46 +00:00
2015-08-16 06:59:58 +00:00
assert . equal ( jQuery ( [ ] ) . add ( ps ) . length , ps . length , "Add a NodeList" ) ;
2013-12-14 01:10:46 +00:00
2015-08-16 06:59:58 +00:00
assert . equal ( jQuery ( [ ] ) . add ( notDefined ) . length , 0 , "Adding undefined adds nothing" ) ;
2010-01-23 21:54:24 +00:00
2015-08-16 06:59:58 +00:00
assert . equal ( jQuery ( [ ] ) . add ( document . getElementById ( "form" ) ) . length , 1 , "Add a form" ) ;
assert . equal ( jQuery ( [ ] ) . add ( document . getElementById ( "select1" ) ) . length , 1 , "Add a select" ) ;
2013-12-14 01:10:46 +00:00
// We no longer support .add(form.elements), unfortunately.
// There is no way, in browsers, to reliably determine the difference
// between form.elements and form - and doing .add(form) and having it
// add the form elements is way to unexpected, so this gets the boot.
//ok( jQuery([]).add(jQuery("#form")[0].elements).length >= 13, "Check elements from array" );
// For the time being, we're discontinuing support for jQuery(form.elements) since it's ambiguous in IE
// use jQuery([]).add(form.elements) instead.
//equal( jQuery([]).add(jQuery("#form")[0].elements).length, jQuery(jQuery("#form")[0].elements).length, "Array in constructor must equals array in add()" );
2015-08-16 06:59:58 +00:00
} ) ;
2010-01-23 21:54:24 +00:00
2015-08-16 06:59:58 +00:00
QUnit . test ( "add(String, Context)" , function ( assert ) {
assert . expect ( 6 ) ;
2011-08-05 14:02:33 +00:00
2015-08-16 03:45:28 +00:00
assert . deepEqual ( jQuery ( "#firstp" ) . add ( "#ap" ) . get ( ) , q ( "firstp" , "ap" ) , "Add selector to selector " ) ;
2015-08-16 06:59:58 +00:00
assert . deepEqual ( jQuery ( document . getElementById ( "firstp" ) ) . add ( "#ap" ) . get ( ) , q ( "firstp" , "ap" ) , "Add gEBId to selector" ) ;
assert . deepEqual ( jQuery ( document . getElementById ( "firstp" ) ) . add ( document . getElementById ( "ap" ) ) . get ( ) , q ( "firstp" , "ap" ) , "Add gEBId to gEBId" ) ;
2010-12-29 02:07:04 +00:00
2015-08-16 06:59:58 +00:00
var ctx = document . getElementById ( "firstp" ) ;
2015-08-16 03:45:28 +00:00
assert . deepEqual ( jQuery ( "#firstp" ) . add ( "#ap" , ctx ) . get ( ) , q ( "firstp" ) , "Add selector to selector " ) ;
2015-08-16 06:59:58 +00:00
assert . deepEqual ( jQuery ( document . getElementById ( "firstp" ) ) . add ( "#ap" , ctx ) . get ( ) , q ( "firstp" ) , "Add gEBId to selector, not in context" ) ;
assert . deepEqual ( jQuery ( document . getElementById ( "firstp" ) ) . add ( "#ap" , document . getElementsByTagName ( "body" ) [ 0 ] ) . get ( ) , q ( "firstp" , "ap" ) , "Add gEBId to selector, in context" ) ;
} ) ;
2011-10-30 17:13:26 +00:00
2022-01-04 15:27:18 +00:00
QUnit . test ( "eq('-1') trac-10616" , function ( assert ) {
2015-08-16 06:59:58 +00:00
assert . expect ( 3 ) ;
2011-10-30 17:13:26 +00:00
var $divs = jQuery ( "div" ) ;
2015-08-16 03:45:28 +00:00
assert . equal ( $divs . eq ( - 1 ) . length , 1 , "The number -1 returns a selection that has length 1" ) ;
assert . equal ( $divs . eq ( "-1" ) . length , 1 , "The string '-1' returns a selection that has length 1" ) ;
assert . deepEqual ( $divs . eq ( "-1" ) , $divs . eq ( - 1 ) , "String and number -1 match" ) ;
2015-08-16 06:59:58 +00:00
} ) ;
2012-10-16 14:25:08 +00:00
2022-01-04 15:27:18 +00:00
QUnit . test ( "index(no arg) trac-10977" , function ( assert ) {
2015-08-16 06:59:58 +00:00
assert . expect ( 2 ) ;
2013-04-09 15:45:09 +00:00
var $list , fragment , div ;
2012-12-18 11:29:04 +00:00
2015-08-16 06:59:58 +00:00
$list = jQuery ( "<ul id='indextest'><li class='zero'>THIS ONE</li><li class='one'>a</li><li class='two'>b</li><li class='three'>c</li></ul>" ) ;
jQuery ( "#qunit-fixture" ) . append ( $list ) ;
2015-09-08 00:26:29 +00:00
assert . strictEqual ( jQuery ( "#indextest li.zero" ) . first ( ) . index ( ) , 0 , "No Argument Index Check" ) ;
2012-10-16 14:25:08 +00:00
$list . remove ( ) ;
2012-12-18 11:29:04 +00:00
2013-04-09 15:45:09 +00:00
fragment = document . createDocumentFragment ( ) ;
2015-08-16 06:59:58 +00:00
div = fragment . appendChild ( document . createElement ( "div" ) ) ;
2012-12-18 11:29:04 +00:00
2015-08-16 03:45:28 +00:00
assert . equal ( jQuery ( div ) . index ( ) , 0 , "If jQuery#index called on element whose parent is fragment, it still should work correctly" ) ;
2015-08-16 06:59:58 +00:00
} ) ;
2013-03-27 01:20:27 +00:00
2022-01-04 15:27:18 +00:00
QUnit . test ( "traversing non-elements with attribute filters (trac-12523)" , function ( assert ) {
2015-08-16 06:59:58 +00:00
assert . expect ( 5 ) ;
2013-03-27 01:20:27 +00:00
2015-08-16 06:59:58 +00:00
var nonnodes = jQuery ( "#nonnodes" ) . contents ( ) ;
2013-03-27 01:20:27 +00:00
2015-08-16 06:59:58 +00:00
assert . equal ( nonnodes . filter ( "[id]" ) . length , 1 , ".filter" ) ;
assert . equal ( nonnodes . find ( "[id]" ) . length , 0 , ".find" ) ;
assert . strictEqual ( nonnodes . is ( "[id]" ) , true , ".is" ) ;
assert . deepEqual ( nonnodes . closest ( "[id='nonnodes']" ) . get ( ) , q ( "nonnodes" ) , ".closest" ) ;
assert . deepEqual ( nonnodes . parents ( "[id='nonnodes']" ) . get ( ) , q ( "nonnodes" ) , ".parents" ) ;
} ) ;