From a7a777dd94b4ec5725ddb8512c60d8967b07fd95 Mon Sep 17 00:00:00 2001 From: "qingwei.li" Date: Thu, 13 Oct 2016 18:06:15 +0800 Subject: [PATCH] optimize clickoutside --- src/utils/clickoutside.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/utils/clickoutside.js b/src/utils/clickoutside.js index 32550cb58..63a45992d 100644 --- a/src/utils/clickoutside.js +++ b/src/utils/clickoutside.js @@ -1,5 +1,9 @@ -import { on, off } from 'wind-dom/src/event'; +import { on } from 'wind-dom/src/event'; +const nodeList = []; +on(document, 'click', e => { + nodeList.forEach(node => node[clickoutsideContext].documentHandler(e)); +}); /** * v-clickoutside * @desc 点击元素外面才会触发的事件 @@ -12,6 +16,7 @@ const clickoutsideContext = '@@clickoutsideContext'; export default { bind(el, binding, vnode) { + const id = nodeList.push(el) - 1; const documentHandler = function(e) { if (!vnode.context || el.contains(e.target) || @@ -24,11 +29,11 @@ export default { } }; el[clickoutsideContext] = { + id, documentHandler, methodName: binding.expression, bindingFn: binding.value }; - on(document, 'click', documentHandler); }, update(el, binding) { @@ -37,7 +42,7 @@ export default { }, unbind(el) { - off(document, 'click', el[clickoutsideContext].documentHandler); + nodeList.splice(el[clickoutsideContext].id, 1); }, install(Vue) {