node.rst 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984
  1. Node API
  2. ========================================================
  3. .. contents::
  4. :depth: 2
  5. .. index:: K
  6. .. _K:
  7. K(expr , root)
  8. --------------------------------------------------------
  9. 创建或选取KNode对象,KNode是原生node的封装,KNode对象拥有以下属性和方法。
  10. * 参数:
  11. * string|node expr: DOM元素、选择器表达式、HTML代码
  12. * element root: DOM根元素,在root范围内选择DOM元素
  13. * 返回: KNode
  14. 示例:
  15. .. sourcecode:: js
  16. node = K('<div>abc</div>');
  17. node = K('#id div');
  18. node = K(document.getElementById('id'));
  19. firstNode = node[0];
  20. .. index:: length
  21. .. _KNode.length:
  22. length
  23. --------------------------------------------------------
  24. node数量
  25. .. sourcecode:: js
  26. var length = K('#id div').length;
  27. .. index:: doc
  28. .. _KNode.doc:
  29. doc
  30. --------------------------------------------------------
  31. 第一个node的document对象。
  32. .. sourcecode:: js
  33. var doc = K('#id div').doc;
  34. .. index:: name
  35. .. _KNode.name:
  36. name
  37. --------------------------------------------------------
  38. 第一个node的nodeName。
  39. .. index:: type
  40. .. _KNode.type:
  41. type
  42. --------------------------------------------------------
  43. 第一个node的nodeType。1: Element, 3: textNode
  44. .. index:: bind
  45. .. _KNode.bind:
  46. bind(type , fn)
  47. --------------------------------------------------------
  48. 将指定函数绑定到所有KNode的指定事件上。
  49. * 参数:
  50. * string type: 事件类型
  51. * function fn: 回调函数
  52. * 返回: KNode
  53. 示例:
  54. .. sourcecode:: js
  55. K('#id div').bind('click', function() {
  56. alert(this.nodeName + ': clicked');
  57. });
  58. K('#id div').click(function() {
  59. alert(this.nodeName + ': clicked');
  60. });
  61. .. index:: unbind
  62. .. _KNode.unbind:
  63. unbind([type , fn])
  64. --------------------------------------------------------
  65. 移除已绑定的事件函数。
  66. * 参数:
  67. * string type: 事件类型
  68. * function fn: 回调函数
  69. * 返回: KNode
  70. 示例:
  71. .. sourcecode:: js
  72. K('#id').unbind('click', functionName); //移除指定的事件函数
  73. K('#id').unbind('click'); //移除所有click事件函数
  74. K('#id').unbind(); //移除所有事件函数
  75. .. index:: fire
  76. .. _KNode.fire:
  77. fire(type)
  78. --------------------------------------------------------
  79. 执行绑定在第一个node上的事件函数。
  80. * 参数:
  81. * string type: 事件类型
  82. * 返回: KNode
  83. 示例:
  84. .. sourcecode:: js
  85. K('#id').fire('click');
  86. K('#id').click();
  87. .. index:: hasAttr
  88. .. _KNode.hasAttr:
  89. hasAttr(key)
  90. --------------------------------------------------------
  91. 判断第一个node是否拥有指定属性。
  92. * 参数:
  93. * string key: 属性名
  94. * 返回: boolean
  95. 示例:
  96. .. sourcecode:: js
  97. var bool = K('#id').hasAttr('border');
  98. .. index:: attr
  99. .. _KNode.attr:
  100. attr()
  101. --------------------------------------------------------
  102. 取得第一个node的所有属性.
  103. * 参数: 无
  104. * 返回: object
  105. 示例:
  106. .. sourcecode:: js
  107. var attrList = K('#id').attr(); //return key-value data
  108. attr(key)
  109. --------------------------------------------------------
  110. 取得第一个node的指定属性.
  111. * 参数:
  112. * string key: 属性名
  113. * 返回: string
  114. 示例:
  115. .. sourcecode:: js
  116. var border = K('#id').attr('border');
  117. attr(key, val)
  118. --------------------------------------------------------
  119. 设置所有node的属性。
  120. * 参数:
  121. * string key: 属性名
  122. * string val: 属性值
  123. * 返回: KNode
  124. 示例:
  125. .. sourcecode:: js
  126. K('#id img').attr('border', 1);
  127. attr(obj)
  128. --------------------------------------------------------
  129. 设置所有node的多个属性。
  130. * 参数:
  131. * object obj: key-value数组
  132. * 返回: KNode
  133. 示例:
  134. .. sourcecode:: js
  135. K('#id img').attr({
  136. 'width' : '100px',
  137. 'border' : 1
  138. });
  139. .. index:: removeAttr
  140. .. _KNode.removeAttr:
  141. removeAttr(key)
  142. --------------------------------------------------------
  143. 移除所有node的指定属性.
  144. * 参数:
  145. * string key: 属性名
  146. * 返回: KNode
  147. 示例:
  148. .. sourcecode:: js
  149. K('#id img').removeAttr('border');
  150. .. index:: get
  151. .. _KNode.get:
  152. get([i])
  153. --------------------------------------------------------
  154. 取得原生node,当KNode的length为0时,返回null.
  155. * 参数:
  156. * int i: offset,默认值为0
  157. * 返回: node
  158. 示例:
  159. .. sourcecode:: js
  160. div1 = K('#id div').get(0);
  161. div2 = K('#id div').get(1);
  162. .. index:: eq
  163. .. _KNode.eq:
  164. eq(i)
  165. --------------------------------------------------------
  166. 将KNode对象转换成length为1的KNode对象。
  167. * 参数:
  168. * int i: The index of the element in the KNode object.
  169. * 返回: KNode
  170. 示例:
  171. .. sourcecode:: js
  172. K('div').eq(2).addClass('blue');
  173. .. index:: hasClass
  174. .. _KNode.hasClass:
  175. hasClass(cls)
  176. --------------------------------------------------------
  177. 判断第一个node是否拥有指定class。
  178. * 参数:
  179. * string cls: className
  180. * 返回: boolean
  181. 示例:
  182. .. sourcecode:: js
  183. var bool = K('#id').hasClass('class-name');
  184. .. index:: addClass
  185. .. _KNode.addClass:
  186. addClass(cls)
  187. --------------------------------------------------------
  188. 将指定className添加到所有node。
  189. * 参数:
  190. * string cls: className
  191. * 返回: KNode
  192. 示例:
  193. .. sourcecode:: js
  194. K('#id').addClass('class-name');
  195. .. index:: removeClass
  196. .. _KNode.removeClass:
  197. removeClass(cls)
  198. --------------------------------------------------------
  199. 移除所有node上的指定className。
  200. * 参数:
  201. * string cls: className
  202. * 返回: KNode
  203. 示例:
  204. .. sourcecode:: js
  205. K('#id').removeClass('class-name');
  206. .. index:: html
  207. .. _KNode.html:
  208. html()
  209. --------------------------------------------------------
  210. 取得第一个node的innerHTML。
  211. * 参数: 无
  212. * 返回: string
  213. 示例:
  214. .. sourcecode:: js
  215. var html = K('#id').html();
  216. html(val)
  217. --------------------------------------------------------
  218. 设置所有node的innerHTML。
  219. * 参数:
  220. * string val: HTML字符串
  221. * 返回: KNode
  222. 示例:
  223. .. sourcecode:: js
  224. K('#id').html('<strong>abc</strong>');
  225. .. index:: hasVal
  226. .. _KNode.hasVal:
  227. hasVal()
  228. --------------------------------------------------------
  229. 判断第一个node是否拥有value属性。
  230. * 参数: 无
  231. * 返回: boolean
  232. 示例:
  233. .. sourcecode:: js
  234. bool = K('#textarea').hasVal(); //return true
  235. bool = K('#div').hasVal(); //return false
  236. .. index:: val
  237. .. _KNode.val:
  238. val()
  239. --------------------------------------------------------
  240. 取得第一个node的value。
  241. * 参数: 无
  242. * 返回: string
  243. 示例:
  244. .. sourcecode:: js
  245. var value = K('#textarea').val();
  246. val(val)
  247. --------------------------------------------------------
  248. 设置所有node的value。
  249. * 参数: 无
  250. * 返回: KNode
  251. 示例:
  252. .. sourcecode:: js
  253. K('#textarea').val('abc');
  254. .. index:: css
  255. .. _KNode.css:
  256. css()
  257. --------------------------------------------------------
  258. 取得第一个node的所有CSS.
  259. * 参数: 无
  260. * 返回: object
  261. 示例:
  262. .. sourcecode:: js
  263. var cssList = K('#id').css(); //return key-value data
  264. css(key)
  265. --------------------------------------------------------
  266. 取得第一个node的指定CSS.
  267. * 参数:
  268. * string key: CSS key
  269. * 返回: string
  270. 示例:
  271. .. sourcecode:: js
  272. var padding = K('#id').css('padding');
  273. css(key, val)
  274. --------------------------------------------------------
  275. 设置所有node的CSS。
  276. * 参数:
  277. * string key: CSS key
  278. * string val: CSS value
  279. * 返回: KNode
  280. 示例:
  281. .. sourcecode:: js
  282. K('#id div').css('border', '1px solid #000');
  283. css(obj)
  284. --------------------------------------------------------
  285. 设置所有node的多个CSS。
  286. * 参数:
  287. * object obj: key-value数组
  288. * 返回: KNode
  289. 示例:
  290. .. sourcecode:: js
  291. K('#id div').css({
  292. 'width' : '100px',
  293. 'height' : '50px',
  294. 'padding' : '10px'
  295. });
  296. .. index:: width
  297. .. _KNode.width:
  298. width()
  299. --------------------------------------------------------
  300. 取得第一个node的宽度(px).
  301. * 参数: 无
  302. * 返回: int
  303. 示例:
  304. .. sourcecode:: js
  305. var width = K('#id').width();
  306. width(val)
  307. --------------------------------------------------------
  308. 设置所有node的宽度。
  309. * 参数:
  310. * string val: 宽度
  311. * 返回: KNode
  312. 示例:
  313. .. sourcecode:: js
  314. K('#id div').width(200);
  315. K('#id div').width('200px');
  316. K('#id div').width('100%');
  317. .. index:: height
  318. .. _KNode.height:
  319. height()
  320. --------------------------------------------------------
  321. 取得第一个node的高度(px).
  322. * 参数: 无
  323. * 返回: int
  324. 示例:
  325. .. sourcecode:: js
  326. var height = K('#id').height();
  327. height(val)
  328. --------------------------------------------------------
  329. 设置所有node的高度。
  330. * 参数:
  331. * string val: 高度
  332. * 返回: KNode
  333. 示例:
  334. .. sourcecode:: js
  335. K('#id div').height(200);
  336. K('#id div').height('200px');
  337. K('#id div').height('100%');
  338. .. index:: opacity
  339. .. _KNode.opacity:
  340. opacity(val)
  341. --------------------------------------------------------
  342. 设置所有node的透明度.
  343. * 参数:
  344. * float val: 透明度,0~1
  345. * 返回: KNode
  346. 示例:
  347. .. sourcecode:: js
  348. K('#id').opacity(0.5);
  349. .. index:: data
  350. .. _KNode.data:
  351. data(key)
  352. --------------------------------------------------------
  353. 取得已绑定的自定义数据。
  354. * 参数:
  355. * string key: data key
  356. * 返回: string
  357. 示例:
  358. .. sourcecode:: js
  359. var data = K('#id').data('data_id');
  360. data(key, val)
  361. --------------------------------------------------------
  362. 绑定自定义数据。
  363. * 参数:
  364. * string key: data key
  365. * string val: data value
  366. * 返回: string
  367. 示例:
  368. .. sourcecode:: js
  369. K('#id').data('abc', 1);
  370. .. index:: pos
  371. .. _KNode.pos:
  372. pos()
  373. --------------------------------------------------------
  374. 取得第一个node在整个document上的x坐标和y坐标。
  375. * 参数: 无
  376. * 返回: string
  377. 示例:
  378. .. sourcecode:: js
  379. var pos = K('#id').pos();
  380. var x = pos.x;
  381. var y = pos.y;
  382. .. index:: clone
  383. .. _KNode.clone:
  384. clone(bool)
  385. --------------------------------------------------------
  386. 复制第一个node,并返回第一个node的KNode。
  387. * 参数:
  388. * boolean bool: true时复制所有子节点,false时只复制父节点
  389. * 返回: 新的KNode
  390. 示例:
  391. .. sourcecode:: js
  392. var newKNode = K('#id').clone();
  393. .. index:: append
  394. .. _KNode.append:
  395. append(expr)
  396. --------------------------------------------------------
  397. element添加一个子节点。
  398. * 参数:
  399. * string|node expr: DOM元素、选择器表达式、HTML代码
  400. * 返回: KNode
  401. 示例:
  402. .. sourcecode:: js
  403. K('#id').append(divNode);
  404. K('#id').append('<div class="abc">def</div>');
  405. .. index:: before
  406. .. _KNode.before:
  407. before(expr)
  408. --------------------------------------------------------
  409. node的前面添加一个节点。
  410. * 参数:
  411. * string|node expr: DOM元素、选择器表达式、HTML代码
  412. * 返回: KNode
  413. 示例:
  414. .. sourcecode:: js
  415. K('#id').before(divNode);
  416. K('#id').before('<div class="abc">def</div>');
  417. .. index:: after
  418. .. _KNode.after:
  419. after(expr)
  420. --------------------------------------------------------
  421. node的后面添加一个节点。
  422. * 参数:
  423. * string|node expr: DOM元素、选择器表达式、HTML代码
  424. * 返回: KNode
  425. 示例:
  426. .. sourcecode:: js
  427. K('#id').after(divNode);
  428. K('#id').after('<div class="abc">def</div>');
  429. .. index:: replaceWith
  430. .. _KNode.replaceWith:
  431. replaceWith(expr)
  432. --------------------------------------------------------
  433. 替换node。
  434. * 参数:
  435. * string|node expr: DOM元素、选择器表达式、HTML代码
  436. * 返回: KNode
  437. 示例:
  438. .. sourcecode:: js
  439. K('#id').replaceWith(divNode);
  440. K('#id').replaceWith('<div class="abc">def</div>');
  441. .. index:: remove
  442. .. _KNode.remove:
  443. remove([keepChilds])
  444. --------------------------------------------------------
  445. 删除node。
  446. * 参数:
  447. * boolean keepChilds: 是否保留子节点,true或false,默认值为false
  448. * 返回: KNode
  449. 示例:
  450. .. sourcecode:: js
  451. K('#id').remove();
  452. .. index:: show
  453. .. _KNode.show:
  454. show([val])
  455. --------------------------------------------------------
  456. 显示element。
  457. * 参数:
  458. * string val: display的值,默认值为block
  459. * 返回: KNode
  460. 示例:
  461. .. sourcecode:: js
  462. K('#id').show();
  463. .. index:: hide
  464. .. _KNode.hide:
  465. hide()
  466. --------------------------------------------------------
  467. 隐藏element。
  468. * 参数: 无
  469. * 返回: KNode
  470. 示例:
  471. .. sourcecode:: js
  472. K('#id').hide();
  473. .. index:: outer
  474. .. _KNode.outer:
  475. outer()
  476. --------------------------------------------------------
  477. 取得第一个element的outerHTML。
  478. * 参数: 无
  479. * 返回: string
  480. 示例:
  481. .. sourcecode:: js
  482. var html = K('#id').outer();
  483. .. index:: isSingle
  484. .. _KNode.isSingle:
  485. isSingle()
  486. --------------------------------------------------------
  487. 判断第一个element是否有闭合标签。
  488. * 参数: 无
  489. * 返回: boolean
  490. 示例:
  491. .. sourcecode:: js
  492. if (K('div').isSingle()) {
  493. console.log('false');
  494. }
  495. .. index:: isInline
  496. .. _KNode.isInline:
  497. isInline()
  498. --------------------------------------------------------
  499. 判断第一个element是不是inline element。
  500. * 参数: 无
  501. * 返回: boolean
  502. 示例:
  503. .. sourcecode:: js
  504. if (K('div').isInline()) {
  505. console.log('false');
  506. }
  507. .. index:: isBlock
  508. .. _KNode.isBlock:
  509. isBlock()
  510. --------------------------------------------------------
  511. 判断第一个element是不是block element。
  512. * 参数: 无
  513. * 返回: boolean
  514. 示例:
  515. .. sourcecode:: js
  516. if (K('div').isBlock()) {
  517. console.log('true');
  518. }
  519. .. index:: contains
  520. .. _KNode.contains:
  521. contains(otherNode)
  522. --------------------------------------------------------
  523. 判断第一个element是否包含指定node。
  524. * 参数:
  525. * node otherNode: 任意节点
  526. * 返回: boolean
  527. 示例:
  528. .. sourcecode:: js
  529. if (K('div#id').contains(K('div#id p')[0])) {
  530. console.log('true');
  531. }
  532. .. index:: parent
  533. .. _KNode.parent:
  534. parent()
  535. --------------------------------------------------------
  536. 取得第一个node的父节点。
  537. * 参数: 无
  538. * 返回: KNode
  539. 示例:
  540. .. sourcecode:: js
  541. var parentNode = K('#id').parent();
  542. .. index:: children
  543. .. _KNode.children:
  544. children()
  545. --------------------------------------------------------
  546. 取得第一个node的子节点列表。
  547. * 参数: 无
  548. * 返回: KNode
  549. 示例:
  550. .. sourcecode:: js
  551. K('#id').children().css('color', 'red');
  552. .. index:: first
  553. .. _KNode.first:
  554. first()
  555. --------------------------------------------------------
  556. 取得第一个node的第一个子节点。
  557. * 参数: 无
  558. * 返回: KNode
  559. 示例:
  560. .. sourcecode:: js
  561. var firstNode = K('#id').first();
  562. .. index:: last
  563. .. _KNode.last:
  564. last()
  565. --------------------------------------------------------
  566. 取得第一个node的最后一个子节点。
  567. * 参数: 无
  568. * 返回: KNode
  569. 示例:
  570. .. sourcecode:: js
  571. var lastNode = K('#id').last();
  572. .. index:: index
  573. .. _KNode.index:
  574. index()
  575. --------------------------------------------------------
  576. 取得第一个node在父节点中的偏移位置。
  577. * 参数: 无
  578. * 返回: int
  579. 示例:
  580. .. sourcecode:: js
  581. var index = K('div#id p').index();
  582. .. index:: prev
  583. .. _KNode.prev:
  584. prev()
  585. --------------------------------------------------------
  586. 取得第一个node的上一个节点。
  587. * 参数: 无
  588. * 返回: KNode
  589. 示例:
  590. .. sourcecode:: js
  591. var prevNode = K('#id').prev();
  592. .. index:: next
  593. .. _KNode.next:
  594. next()
  595. --------------------------------------------------------
  596. 取得第一个node的下一个节点。
  597. * 参数: 无
  598. * 返回: KNode
  599. 示例:
  600. .. sourcecode:: js
  601. var nextNode = K('#id').next();
  602. .. index:: scan
  603. .. _KNode.scan:
  604. scan(fn [, order])
  605. --------------------------------------------------------
  606. 遍历第一个node的所有子节点。
  607. * 参数:
  608. * function fn: 回调函数
  609. * boolean order: 遍历方向,true为顺序,false为逆序,默认值为true
  610. * 返回: KNode
  611. 示例:
  612. .. sourcecode:: js
  613. K('div#id').scan(function(node) (
  614. console.log(node);
  615. ));