Jquery ONE function PURE js
Jquery ONE function PURE js
那里! 我在像JQUERY
一样创建one
函数时遇到了问题。
这是操作: https://jsfiddle.net/77yzLt6v/
一次性执行事件
.HTML:
<div id="justOnce">click me!</div>
function one(dom, event, callback) {
dom.addEventListener(event, function(e) { // add event
this.removeEventListener(event, callback); // remove it
});
}
one(document.getElementById("justOnce"), "click", function() {
alert("this alert only show once time");
});
我的代码有什么问题?
提前感谢...
代码绑定一个事件处理程序,该处理程序将callback
作为事件处理程序删除。
唯一的问题是...您从未将callback
绑定为事件处理程序。
你想要更多这样的东西:
function one(dom, event, callback) {
function handler(e) {
callback.call(this, e);
this.removeEventListener(event, handler);
}
dom.addEventListener(event, handler);
}
即
- 您需要致电
callback
- 您需要删除实际绑定的事件处理程序
新标准支持此功能,但尚未在任何浏览器中工作(caniuse.com)
window.addEventListener('resize', console.log, {once: true})
多填充:
;(function(){
let p = document.createElement('p')
let count = 0
let event = new CustomEvent('x')
p.addEventListener('x', () => {i++})
p.dispatchEvent(event)
p.dispatchEvent(event)
if (i != 2) return
for (let obj of [Window, Element]) {
let orig = obj.prototype.addEventListener
function addEventListener(type, callback, opts) {
let args = Array.from(arguments)
if(opts && opts.once) {
function handler(e) {
callback.call(this, e)
this.removeEventListener(type, handler)
}
args[1] = handler
}
orig.apply(this, args)
}
obj.prototype.addEventListener = addEventListener
}
}())
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 使用agility.js进行页面布局和合成
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 强制模板刷新ember.js
- 如何编写HTML输入的JS内联
- 使用 Pure JS 更改 HTML 标记名称
- Pure JS to lodash
- Jquery ONE function PURE js
- 构建一个移动友好的浏览器游戏 - Pure JS,Jquery,Flash,Unity或WebGL
- 使用 PURE JS 基于输入标签添加占位符属性 - 没有 jQuery
- Pure.js 必须与现有页面节点一起使用
- Pure JS equivalent of Jquery eq()
- 在JS或Pure Java中寻找可以与GWT一起使用的ZLIB库
- 匿名函数的调用(vanilla-js,pure-js,no-jquery)
- 元音计数器在Pure js中不起作用
- 如何在Pure JS中使用GET方法获取用户的IP地址?
- 如何使用pure.js自动渲染JSON数组
- 理解Pure JS中的事件附件代码
- Pure JS Carousel bug