84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
页面中有一个元素,如果这个元素消失在可视区内的话,这个元素有个变化。可是导致这个元素消失的操作有很多,我监听事件的时候,是不是要监听全部可能的事件?还是说有一种方法不用这么麻烦??求大神解答补充说一下,就是页面中有两个按钮,然后按钮开始是显示在可视区内的,页面中有几个元素有下拉,还有可以的元素可以点击高度变大的元素等等。。。我想的是不管什么操作,如果按钮消失在可视区内的话,我的这个按钮就要脱离文档流固定到底部来。我想能不能来一个总的方法,而不是每种情况都要监听一下
小伙看你根骨奇佳,潜力无限,来学PHP伐。
你想捕获一种对应消失的操作,只要在这种操作的最后,生成个自定义事件,然后监听这个自定义事件就好了。
你是要实现消失之后做某个操作吗?如果这样的话,只要监听消失不就够了么?跟导致消失的事件有什么关系呢?
增加对dom元素事件绑定的方法:
function on(element, event, handle) { if(typeof element.addEventListener === "function") { element.addEventListener(event, handle, false) } else if(typeof element.attachEvent === "function") { element.attachEvent("on" + event, handle) } else { element["on" + event] = handle } }
增加触发的方法:
function trigger(element, event) { if(typeof element.dispatchEvent === "function") { element.dispatchEvent(event) } else if(typeof element.fireEvent === "function") { var eventObj = document.createEventObject() element.fireEvent("on" + event, eventObj) } else { element["on" + event]() } }
接下来处理正常的逻辑,在你每次操作某个DOM元素的时候,都用trigger函数去对你需要监听的DOM元素进行事件触发,例如:
var elem = document.getElementById("my-element") on(elem, "change", (e) => { // ... }) on(elem, "click", (e) => { var p = document.createElement("p") elem.appendChild(p) trigger(elem, "change") // 触发change事件 })
你想捕获一种对应消失的操作,只要在这种操作的最后,生成个自定义事件,然后监听这个自定义事件就好了。
你是要实现消失之后做某个操作吗?如果这样的话,只要监听消失不就够了么?跟导致消失的事件有什么关系呢?
增加对dom元素事件绑定的方法:
增加触发的方法:
接下来处理正常的逻辑,在你每次操作某个DOM元素的时候,都用trigger函数去对你需要监听的DOM元素进行事件触发,例如: