Bài toán đưa ra là khi chúng ta click ngoài một element thì thực hiện event ví dụ đóng tất cả filter của một form chẳng hạn, như hình bên dưới bạn sẽ thấy chúng ta muốn đóng tất cả filter khi click vào bất cứ vị trí nào trên page ở ngoài form tìm kiếm
Ngay sau đây sẽ là code để dùng
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() }, }) |
1 2 3 |
<div class="realhomeschild_form_search custom-search-bar" v-clickoutside="offAllFilter"> đây là form </div> |
và chúng ta sẽ viết code đóng tất cả filter thông qua function offAllFilter
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