node.js 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. module('node');
  2. test('K(html)', function(){
  3. var node = K('<div class="abc" style="font-size:12px;"></div>abc<p></p>');
  4. equals(node.name, 'div');
  5. equals(node.length, 3);
  6. equals(node.attr('class'), 'abc');
  7. equals(node.css('font-size'), '12px');
  8. equals(K('@p > strong').get().nodeValue, 'p > strong');
  9. equals(K('@1 2 ').get().nodeValue, '1 2 ');
  10. });
  11. test('K(selector)', function(){
  12. var node = K('p > strong');
  13. equals(node.name, 'strong');
  14. equals(node.get(1).nodeName.toLowerCase(), 'strong');
  15. equals(node.get(2).nodeName.toLowerCase(), 'strong');
  16. equals(node.length, 3);
  17. });
  18. test('K(node)', function(){
  19. var node = K(document.createTextNode('abc'), document.createElement('div'));
  20. equals(node.name, '#text');
  21. equals(node.get(1).nodeName.toLowerCase(), 'div');
  22. equals(node.length, 2);
  23. });
  24. test('get', function() {
  25. var div = K('div');
  26. ok(div.get(0) === div[0]);
  27. });
  28. test('eq', function() {
  29. var div = K('div');
  30. ok(div.eq(0)[0] === div[0]);
  31. });
  32. test('attr/removeAttr', function() {
  33. equals(K('#test-data-01').attr('src', 'aaa').attr('src'), 'aaa');
  34. equals(K('#test-data-02').attr('src', 'aaa').removeAttr('src').attr('src'), '');
  35. equals(K('#test-data-01').attr('id'), 'test-data-01');
  36. equals(K('#test-data-01').attr('class'), 'test-class');
  37. equals(K('#test-data-01 p img').attr('src'), './data/logo_180_30.gif');
  38. equals(K('#test-data-03 p span').attr('style'), 'color:red;');
  39. equals(K('#test-data-01 p img').attr('border'), '0');
  40. equals(K('#test-data-01').attr('class'), 'test-class');
  41. equals(K('<div></div>').attr('class', 'aaa').attr('class'), 'aaa');
  42. equals(K('<div></div>').removeAttr('class').attr('class'), '');
  43. equals(K('<div style="color:red;"></div>').attr('style'), 'color:red;');
  44. });
  45. test("hasClass/addClass/removeClass", function() {
  46. var knode = K('<div></div>');
  47. var div = knode.get();
  48. knode.addClass('aaa');
  49. ok(knode.hasClass('aaa'));
  50. equals(div.className, 'aaa');
  51. knode.addClass('aaa');
  52. equals(div.className, 'aaa');
  53. knode.addClass('bbb');
  54. ok(knode.hasClass('bbb'));
  55. equals(div.className, 'aaa bbb');
  56. knode.addClass('ccc');
  57. ok(knode.hasClass('ccc'));
  58. equals(div.className, 'aaa bbb ccc');
  59. knode.removeClass('aaa');
  60. ok(!knode.hasClass('aaa'));
  61. equals(div.className, 'bbb ccc');
  62. knode.removeClass('bbb');
  63. ok(!knode.hasClass('bbb'));
  64. equals(div.className, 'ccc');
  65. knode.removeClass('ccc');
  66. ok(!knode.hasClass('ccc'));
  67. equals(div.className, '');
  68. equals(K('<div></div>').addClass('aaa').removeClass('aaa').addClass('bbb').get().className, 'bbb');
  69. });
  70. test("contains",function(){
  71. ok(K('#test-data-01 p').contains(K('#test-data-01 p')) === false);
  72. ok(K('#test-data-01').contains(K('#test-data-01 p')) === true);
  73. ok(K('#test-data-01 strong').contains(K('#test-data-01 strong').first()) === true);
  74. ok(K(document).contains(K('#test-data-01 strong')) === true);
  75. ok(K(document).contains(document) === false);
  76. ok(K(document).contains(document.body));
  77. ok(K('#test-data-01 strong').first().contains(K('#test-data-01 strong')) === false);
  78. });
  79. test("val",function(){
  80. equals(K('<input value="aa" />').val(), "aa");
  81. equals(K('<div value="aa"></div>').val(), "aa");
  82. equals(K('<input value="aa" />').val("bb").val(), "bb");
  83. equals(K('<div value="aa"></div>').val("").val(), "");
  84. equals(K('<textarea></textarea>').val('abc').val(), 'abc');
  85. });
  86. test("css",function(){
  87. var node = K('<div></div>');
  88. equals(node.css('width','300px').css('width'), '300px');
  89. equals(node.css('border','1px solid #ccc').css('border'),node.css('border'));
  90. node = K('#test-data-01');
  91. equals(node.css('width'), '300px');
  92. });
  93. test("width/height",function(){
  94. equals(K('#test-data-01').width(), 300);
  95. ok(K('#test-data-01').height() > 110);
  96. });
  97. test("append",function(){
  98. var node = K('<div class="abcd"></div><p></p>').append('@abc');
  99. equals(node.html(), 'abc');
  100. equals(K(node[1]).html(), 'abc');
  101. });
  102. test("before",function(){
  103. var parent = K('<div><div class="abc"></div><p class="abc"></p></div>');
  104. K(document.body).append(parent);
  105. K('.abc', parent).before('<span>def</span>');
  106. var children = parent.children();
  107. equals(children.length, 4);
  108. equals(K(children[0]).name, 'span');
  109. equals(K(children[1]).name, 'div');
  110. equals(K(children[2]).name, 'span');
  111. equals(K(children[3]).name, 'p');
  112. parent.remove();
  113. });
  114. test("after",function(){
  115. var parent = K('<div><div class="abc"></div><p class="abc"></p></div>');
  116. K(document.body).append(parent);
  117. K('.abc', parent).after('<span>def</span>');
  118. var children = parent.children();
  119. equals(children.length, 4);
  120. equals(K(children[0]).name, 'div');
  121. equals(K(children[1]).name, 'span');
  122. equals(K(children[2]).name, 'p');
  123. equals(K(children[3]).name, 'span');
  124. parent.remove();
  125. });
  126. test("replaceWith",function(){
  127. var node = K('<div></div>').replaceWith('<p></p>');
  128. equals(node.length, 1);
  129. equals(node.name, 'p');
  130. });
  131. test("remove",function(){
  132. var node = K('<div></div><p>123</p>').addClass('abc').html('test');
  133. node.remove();
  134. equals(node.length, 0);
  135. // Test preserve child nodes.
  136. var node = K('<div><p><span>123</span><span>456</span>789</p></div>');
  137. K('p', node).remove(true);
  138. equals(node.html(), '<span>123</span><span>456</span>789');
  139. });
  140. test("html",function(){
  141. var node = K('<div>xxx</div>');
  142. K(document.body).append(node);
  143. equals(node.html(), 'xxx');
  144. equals(node.html('bbb').html(), 'bbb');
  145. equals(K('<textarea></textarea>').html('abc').html(), 'abc');
  146. equals(node.html('<p><br></p>').html(), '<p><br /></p>');
  147. equals(node.html('<script></script>').html(), '<script></script>');
  148. node.remove();
  149. });
  150. test("outer",function(){
  151. var node = K('<div>xxx</div>');
  152. equals(node.outer(), '<div>xxx</div>');
  153. equals(node.addClass('aaa').outer(), '<div class="aaa">xxx</div>');
  154. });
  155. test("chidren",function(){
  156. var node = K('<div><span>abc</span>123</div>');
  157. equals(node.children().length, 2);
  158. equals(node.children().name, 'span');
  159. equals(K('<div></div>').children().length, 0);
  160. });
  161. test('show/hide',function(){
  162. var node = K('<div/>');
  163. equals(node.show().outer(), '<div></div>');
  164. equals(node.hide().outer(), '<div style="display:none;"></div>');
  165. equals(node.show().outer(), '<div></div>');
  166. node = K('<div style="display:inline;"/>');
  167. equals(node.show().outer(), '<div style="display:inline;"></div>');
  168. equals(node.hide().outer(), '<div style="display:none;"></div>');
  169. equals(node.show().outer(), '<div style="display:inline;"></div>');
  170. node = K('<div style="display:block;"/>');
  171. equals(node.show().outer(), '<div style="display:block;"></div>');
  172. equals(node.hide().outer(), '<div style="display:none;"></div>');
  173. equals(node.show().outer(), '<div style="display:block;"></div>');
  174. });
  175. test("data", function(){
  176. K(document).data('abc', '123');
  177. K('body').data('abc', '1234');
  178. K('body div').data('abc', '12345');
  179. equals(K(document).data('abc'), '123');
  180. equals(K('body').data('abc'), '1234');
  181. equals(K('body div').data('abc'), '12345');
  182. });