delbox.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. 'use strict';
  2. var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
  3. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  4. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  5. var DelBox = function () {
  6. function DelBox(_ref) {
  7. var box = _ref.box;
  8. _classCallCheck(this, DelBox);
  9. this.arr = [];
  10. this.domArr = [];
  11. this.box = box;
  12. }
  13. /**
  14. * addDelBox 添加可删除的盒子
  15. * @param str - 内容ID(唯一ID,用于去重)
  16. * @param box - *父级盒子选择器
  17. * @param template - 模板函数 (str,i,arr_key)
  18. * @param arr - 数据存放的数组变量 ('key'|'buy'|..)
  19. */
  20. _createClass(DelBox, [{
  21. key: 'addDelBox',
  22. value: function addDelBox() {
  23. var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  24. _ref2$str = _ref2.str,
  25. str = _ref2$str === undefined ? '默认内容' : _ref2$str,
  26. _ref2$k = _ref2.k,
  27. k = _ref2$k === undefined ? 'key' : _ref2$k;
  28. var tempArr = this.arr;
  29. var tempDom = this.domArr;
  30. if (tempArr.indexOf(k) === -1) {
  31. var pDom = this.toJqDom(this.box);
  32. var tempContent = this.toJqDom(this.createDefaultTemp(str, tempArr.length, k));
  33. pDom.append(tempContent);
  34. tempDom.push(tempContent);
  35. tempArr.push(k);
  36. }
  37. this.arr = tempArr;
  38. this.domArr = tempDom;
  39. }
  40. /**
  41. * createDefaultTemp 默认可删除标签模板
  42. * @param s - 内容
  43. * @param i - 数组变量 index
  44. * @param k - 数组变量 key
  45. * @return {string}
  46. */
  47. }, {
  48. key: 'createDefaultTemp',
  49. value: function createDefaultTemp(s, i, k) {
  50. var _this = this;
  51. if(s === '其他') {
  52. s = k
  53. }
  54. var temp = document.createElement('div');
  55. temp.innerHTML = '<div data-arrIndex="' + i + '" data-key="' + k + '" class="delete-box-close">' + s + '</div>';
  56. var child = this.toJqDom(temp.children);
  57. var close = document.createElement('i');
  58. close.className = 'iconfont icon-guanbi';
  59. close.onclick = function () {
  60. _this.del(k);
  61. };
  62. child.append(close);
  63. return child;
  64. }
  65. /**
  66. * toJqDom 顾名思义,转化为Jq对象
  67. * @param selector
  68. * @return {*}
  69. */
  70. }, {
  71. key: 'toJqDom',
  72. value: function toJqDom(selector) {
  73. if (selector instanceof jQuery) {
  74. return selector;
  75. }
  76. return $(selector);
  77. }
  78. }, {
  79. key: 'add',
  80. value: function add(s, k) {
  81. this.addDelBox({ str: s, k: k });
  82. }
  83. }, {
  84. key: 'clear',
  85. value: function clear(other) {
  86. var _this2 = this;
  87. if ((typeof other === 'undefined' ? 'undefined' : _typeof(other)) !== 'object') {
  88. return false;
  89. }
  90. other.forEach(function (v) {
  91. return _this2.del(v);
  92. });
  93. }
  94. }, {
  95. key: 'del',
  96. value: function del(s) {
  97. var _this3 = this;
  98. var index = s;
  99. if (typeof s !== 'number') {
  100. index = this.arr.indexOf(s);
  101. }
  102. if (index !== -1) {
  103. this.arr = this.arr.filter(function (v) {
  104. return v !== _this3.arr[index];
  105. });
  106. var d = this.domArr.splice(index, 1)[0];
  107. if(d) {
  108. d.remove();
  109. }
  110. }
  111. }
  112. }]);
  113. return DelBox;
  114. }();