From 2cde71e74daddc0f666693c07c46e32cd847144f Mon Sep 17 00:00:00 2001 From: surunzi Date: Mon, 6 Jun 2016 15:44:18 +0800 Subject: [PATCH] Fix: Elements select error --- eustia/isErudaEl.js | 14 ++++++++++ src/Elements/Elements.es6 | 17 ------------ src/Elements/Select.es6 | 4 +++ src/lib/util.js | 58 +++++++++++++++------------------------ 4 files changed, 40 insertions(+), 53 deletions(-) create mode 100644 eustia/isErudaEl.js diff --git a/eustia/isErudaEl.js b/eustia/isErudaEl.js new file mode 100644 index 0000000..270e6b4 --- /dev/null +++ b/eustia/isErudaEl.js @@ -0,0 +1,14 @@ +function exports(el) +{ + var parentNode = el.parentNode; + + if (!parentNode) return false; + + while (parentNode) + { + parentNode = parentNode.parentNode; + if (parentNode && parentNode.id === 'eruda') return true; + } + + return false; +} \ No newline at end of file diff --git a/src/Elements/Elements.es6 b/src/Elements/Elements.es6 index aabb321..95fd6e5 100644 --- a/src/Elements/Elements.es6 +++ b/src/Elements/Elements.es6 @@ -161,8 +161,6 @@ export default class Elements extends Tool } _setEl(el) { - if (isErudaEl(el)) return; - this._curEl = el; this._curCssStore = new CssStore(el); this._highlight.setEl(el); @@ -406,18 +404,3 @@ function rmEvent(el, type, listener, useCapture = false) } var getWinEventProto = () => (window.EventTarget && window.EventTarget.prototype) || window.Node.prototype; - -function isErudaEl(el) -{ - let parentNode = el.parentNode; - - if (!parentNode) return false; - - while (parentNode) - { - parentNode = parentNode.parentNode; - if (parentNode && parentNode.id === 'eruda') return true; - } - - return false; -} diff --git a/src/Elements/Select.es6 b/src/Elements/Select.es6 index 1cd1400..c1dbc19 100644 --- a/src/Elements/Select.es6 +++ b/src/Elements/Select.es6 @@ -10,6 +10,8 @@ export default class Select extends util.Emitter this._startListener = function (e) { + if (util.isErudaEl(e.target)) return; + self._timer = setTimeout(function () { self.emit('select', e.target); @@ -25,6 +27,8 @@ export default class Select extends util.Emitter this._clickListener = function (e) { + if (util.isErudaEl(e.target)) return; + e.preventDefault(); e.stopImmediatePropagation(); }; diff --git a/src/lib/util.js b/src/lib/util.js index 2238bc4..8a34e39 100644 --- a/src/lib/util.js +++ b/src/lib/util.js @@ -1080,6 +1080,28 @@ module.exports = (function () return exports; })({}); + /* ------------------------------ isErudaEl ------------------------------ */ + + var isErudaEl = _.isErudaEl = (function (exports) + { + function exports(el) + { + var parentNode = el.parentNode; + + if (!parentNode) return false; + + while (parentNode) + { + parentNode = parentNode.parentNode; + if (parentNode && parentNode.id === 'eruda') return true; + } + + return false; + } + + return exports; + })({}); + /* ------------------------------ isFn ------------------------------ */ var isFn = _.isFn = (function (exports) @@ -1475,42 +1497,6 @@ module.exports = (function () * |methods|object |Public methods | * |statics|object |Static methods | * |return |function|Function used to create instances| - * - * ```javascript - * var People = Class({ - * initialize: function (name, age) - * { - * this.name = name; - * this.age = age; - * }, - * introduce: function () - * { - * return 'I am ' + this.name + ', ' + this.age + ' years old.'. - * } - * }); - * - * var Student = People.extend({ - * initialize: function (name, age, school) - * { - * this.callSuper('initialize', name, age); - * - * this.school = school. - * }, - * introduce: function () - * { - * return this.callSuper('introduce') + '\n I study at ' + this.school + '.'. - * } - * }, { - * is: function (obj) - * { - * return obj instanceof Student; - * } - * }); - * - * var a = new Student('allen', 17, 'Hogwarts'); - * a.introduce(); // -> 'I am allen, 17 years old. \n I study at Hogwarts.' - * Student.is(a); // -> true - * ``` */ var regCallSuper = /callSuper/;