注册 登录
编程论坛 JavaScript论坛

一个困了很久的问题:attachEvent & detachEvent & this

hugeannex 发布于 2010-12-07 16:41, 2338 次点击
function aa()
{
   this.nodeName;
}
XXX.attachEvent('click',aa);
怎么在attachEvent中的事件aa中的this指向XXX本身?并且要能在detachEvent中能删除相应的方法。(注意这条件)

好像这是一个大难道,自己重写一个方法就不用回复了,因为有要求,所以才有挑战性。

各位有什么好的招不?
20 回复
#2
gulimeksoft2010-12-07 17:38
$('#XXX').bind('click', function() {
  $(this).attr('name')}
);
参考
#3
hugeannex2010-12-08 09:15
以下是引用gulimeksoft在2010-12-7 17:38:12的发言:

参考
这是哪跟哪了,这是jquery,而且和“原生态”的js不一样的。好不。
#4
aspic2010-12-08 10:07
IE中添加事件 this的指向变为事件。。。
#5
aspic2010-12-08 10:08
如果你觉得不用写方法就可以 那么估计你得自己写js引擎了
#6
gupiao1752010-12-08 10:16
还没听懂楼主的意思,那个写法是IE写加事件很经常用法,不知道还要怎么做呢??很正常的东西啊!
#7
aspic2010-12-08 10:23
程序代码:
<input id="btnOK" type="button" value="test" />
<script type="text/javascript">
function aa(){
    alert(this.id)
}
var obj = document.getElementById("btnOK");
if(obj.attachEvent){
    obj.attachEvent('onclick', (function(){
        return function(){
            aa.call(obj)   
        }                                    
    })(obj))
}
</script>
#8
aspic2010-12-08 10:24
他是想this指向同一个对象
#9
hugeannex2010-12-08 10:26
以下是引用aspic在2010-12-8 10:23:11的发言:

 
 
function aa(){
    alert(this.id)
}
var obj = document.getElementById("btnOK");
if(obj.attachEvent){
    obj.attachEvent('onclick', (function(){
        return function(){
            aa.call(obj)   
        }                                    
    })(obj))
}
这个我自然知道,但你看我提问的红色字部份了没?
#10
hugeannex2010-12-08 10:33
以下是引用aspic在2010-12-8 10:08:12的发言:

如果你觉得不用写方法就可以 那么估计你得自己写js引擎了
此言差矣。那是一种追求,自己绕来绕去的建一种,我相信很多人都会,但要在原attachEvent上改进,我想可能就没人会了。追求,懂不?
#11
aspic2010-12-08 10:35
你去51js问问吧 这里没有适合你的
#12
aspic2010-12-08 10:36
既然没有人会为什么你还来这里问呢?
#13
hugeannex2010-12-08 10:37
以下是引用aspic在2010-12-8 10:35:08的发言:

你去51js问问吧 这里没有适合你的
这里没有合适的,51js就有合适的吗?我就不信那邪了。
#14
hugeannex2010-12-08 10:37
以下是引用aspic在2010-12-8 10:36:21的发言:

既然没有人会为什么你还来这里问呢?
一人技短,两人技长。你懂不懂的。
#15
sclorg2010-12-08 13:53
这个题目有什么意义?
#16
hugeannex2010-12-16 17:03
...

[ 本帖最后由 hugeannex 于 2010-12-16 20:50 编辑 ]
#17
foktime2010-12-24 08:36
https://bbs.bccn.net/thread-329762-1-1.html

那个博主给你的帖子
#18
hugeannex2010-12-24 09:31
以下是引用foktime在2010-12-24 08:36:15的发言:

https://bbs.bccn.net/thread-329762-1-1.html

那个博主给你的帖子
看了,只能点一次,达不到我所说的要求。
我也能做出我所想要的结果,但弯捌得有点大,所以想看看有没有更好的。
还是谢谢关注。
#19
hugeannex2010-12-24 09:48
再认真看了一下,发现我上面说错了,效果是实现了,不过劫持了原js的方法,所以不符合“自己重写一个方法就不用回复了”。
#20
hugeannex2010-12-24 11:03
他劫持了原有的document.getElementById()方法和document.createElement()方法。
鄙人认为,内置函数要比自定义的执行快得多,所以不赞成劫持内置函数。

后话:不过我想到比较好的解决方法了。呵呵。关门补觉去了……
#21
qingshuiliu2010-12-24 16:43
真是个牛人啊
1