如何将其他对象插入事件侦听器
how to insert other object to event listener?
我的javascript:
var tool = {
addEvent : function(element, eventName, callback){
if (element.addEventListener) {
element.addEventListener(eventName, callback, false);
} else if (element.attachEvent) {
element.attachEvent("on" + eventName, callback);
}
},
getPosition : function(el){
var _x = 0;
var _y = 0;
while( el && !isNaN( el.offsetLeft ) && !isNaN( el.offsetTop ) ) {
_x += el.offsetLeft - el.scrollLeft;
_y += el.offsetTop - el.scrollTop;
el = el.offsetParent;
}
return { top: _y, left: _x };
}
}
function getObj(){
this.a = document.getElementById('div');
this.b = document.getElementById('table');
this.func = function(){
var pos = tool.getPosition(this);
// how to insert this.b here
// i want to set this.b offset from this.a offset
}
tool.addEvent(this.a,'scroll',this.func);
}
var obj = new getObj();
如何修改它。所以每当这个。A是滚动的。B会同步到这个。一个
这一点。B偏移量是从这里得到的。一个偏移量。
当我尝试:
this.func = function(){
var pos = tool.getPosition(this);
// value from pos will be set to this.b
console.log(this.b);
// how to insert this.b here
// i want to set this.b offset from this.a offset
}
。
您的getPosition
函数是this
的成员,因此您不能使用getPosition(...)
调用它。必须使用this.getPosition(...)
调用它,或者将getPosition
函数重新声明为函数作用域变量:
function getObj() {
...
var getPosition = function(...) { ... };
this.addEvent = function(...) { ... };
...
}
编辑:当添加DOM事件时,您还需要将this.func
绑定到当前上下文:
this.func = this.func.bind(this);
this.addEvent (this.a"滚动",this.func);
相关文章:
- 手柄'img'单击事件并插入'alt'使用jQuery将属性转换为文本框
- 将事件侦听器添加到文档,而不是签入元素存在,然后添加事件侦听器
- 插入后单击锚点标记上的事件after不起作用
- 如何将事件的日期放入fullcalendar中的日期对象中
- CRM 2011-在插入新记录或修改现有记录时捕获子网格的事件
- 收集订阅者的流星事件,用于在 mongodb 中新插入文档
- 我需要从单击事件在数据库中插入纬度和经度,但是当我单击时,我在数据库中得到了零值,而不是实际值
- 如果事件发生后插入了检查代码,那么$(document).ready()会被激发吗
- 插入html时是否有触发事件的方法
- 使用jquery单击事件淡入隐藏文本
- 如何在动态插入的html文件中使用onload事件
- 在事件jquery中插入一个函数
- AJAX添加多个事件插入前重置Id
- iOS Touch 事件在 DOM 插入时传递
- 在 Meteor 中,如何将模板事件附加到动态插入的元素
- 微小的MCE插入符号定位,同时移入和移出跨度
- 将类/对象>函数()调用插入到onsubmit事件中
- DOMNode插入的事件循环
- 需要使用Javascript插入onclick事件的帮助
- 插入一个事件与nodejs谷歌日历API返回400:"缺失的结束时间"