$insert.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. var each = require('./each');
  2. var $safeEls = require('./$safeEls');
  3. var isStr = require('./isStr');
  4. exports = {
  5. before: insertFactory('beforebegin'),
  6. after: insertFactory('afterend'),
  7. append: insertFactory('beforeend'),
  8. prepend: insertFactory('afterbegin')
  9. };
  10. function insertFactory(type) {
  11. return function(nodes, val) {
  12. nodes = $safeEls(nodes);
  13. each(nodes, function(node) {
  14. if (isStr(val)) {
  15. node.insertAdjacentHTML(type, val);
  16. } else {
  17. var parentNode = node.parentNode;
  18. switch (type) {
  19. case 'beforebegin':
  20. if (parentNode) {
  21. parentNode.insertBefore(val, node);
  22. }
  23. break;
  24. case 'afterend':
  25. if (parentNode) {
  26. parentNode.insertBefore(val, node.nextSibling);
  27. }
  28. break;
  29. case 'beforeend':
  30. node.appendChild(val);
  31. break;
  32. case 'afterbegin':
  33. node.prepend(val);
  34. break;
  35. }
  36. }
  37. });
  38. };
  39. }
  40. module.exports = exports;