Ví dụ minh họa bên dưới khi chúng ta muốn click bên ngoài form thì tất cả filter phải đóng, vậy làm sao để detect sự kiện này?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Vue.directive('clickoutside', { inserted: (el, binding, vnode) => { // assign event to the element el.clickOutsideEvent = function (event) { // here we check if the click event is outside the element and it's children if (!(el == event.target || el.contains(event.target))) { // if clicked outside, call the provided method vnode.context[binding.expression](event) } } // register click and touch events document.body.addEventListener('click', el.clickOutsideEvent) document.body.addEventListener('touchstart', el.clickOutsideEvent) }, unbind: function (el) { // unregister click and touch events before the element is unmounted document.body.removeEventListener('click', el.clickOutsideEvent) document.body.removeEventListener('touchstart', el.clickOutsideEvent) }, stopProp(event) { event.stopPropagation() }, }) |
khi click ngoài thẻ div thì function offAllFilter sẽ được thực hiện và thực hiện như thế nào thì do chúng ta muốn thôi
1 2 |
<div class="realhomeschild_form_search" v-clickoutside="offAllFilter" > </div> |
Mọi sự sao chép xin ghi rõ nguồn là fcwordpress.net
Chuyên trang về wordpress: hướng dẫn thiết kế theme, plugin, thủ thuật wordpress