如何添加监听事件方法 并传递参数

tmdwawa 2010-03-25 03:50:09
function show(name){

}
addEvent(对象1,"mousedown",show);
addEvent(对象2,"mousedown",show);

如何添加让不同对象同时绑定一个函数,并传递不同的参数???

有知道的不?
...全文
370 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
tmdwawa 2010-03-26
  • 打赏
  • 举报
回复
汗,我从jquery得到了,也是创建唯一的临时句柄,存储.删除时再用..

很感谢你们的回答..这样我才能不断进步..
fengjia123123123 2010-03-26
  • 打赏
  • 举报
回复
用Jquery 中的bind() 和 unbind(),很用以实现,楼主可以去学习一下。谢谢!
plzzz 2010-03-25
  • 打赏
  • 举报
回复
看下 jQuery 里的 Event 是如何管理事件的吧..

你说的那个 jquery里会给 给函数加一个 uid 的值 ,,自已看下吧,,不好说
tmdwawa 2010-03-25
  • 打赏
  • 举报
回复
楼上,还是没讲怎么删除!!
本来也可以删除,就是创建每绑定一个创建一个函数,生成一个句柄..删除事件时,同时要删除创建的函数.

如果用addEvent(对象,event ,function(){所绑定的函数})  

这样可以添加.就是不知怎么删除呀
passself 2010-03-25
  • 打赏
  • 举报
回复

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>绑定函数</title>
<script src="jquery-1.3.2.js"></script>
<script>
$(document).ready(function(){
$(".btn").mousedown(function(){
var temp_name = $(this).attr("name");
show(temp_name);
});
function show(name){
alert("该对象名字:"+name);
}
});
</script>
</head>

<body>
<input type="text" value="点击" name="对象1" class="btn" />
<input type="text" value="点击" name="对象2" class="btn" />
</body>
</html>


我的是jquery
tmdwawa 2010-03-25
  • 打赏
  • 举报
回复

yeery={}
show=function(){
yeery.name="123";
alert(yeery.name);
}
addEvent(对象1,"mousedown",show);
改变yeery.name=456值.重新绑定
addEvent(对象2,"mousedown",show);

然后两个对象都是响应的都是456

所以不行..不能完成一个函数绑定两对象,并实现传参...  求救中..
KK3K2005 2010-03-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 tmdwawa 的回复:]

大哥,那删除怎么办,没有句柄..删不了绑定的东西....
[/Quote]
那就自己加个句柄出来
比如
对象1.hdmousedown=function(){show();}
addEvent(对象1,"mousedown",对象1.hdmousedown);
lianqin7 2010-03-25
  • 打赏
  • 举报
回复

//以下代码IE Only
function show(){
//点击对象1就是对象1,对象2就是对象2
//P.S.也有可能是其他对象,这种方法不保险
var obj = window.event.srcElement;

//或者使用某种映射 var name = _args[obj.id]
//_args为事先定义好的映射对象
var name = obj.name;
//Todo
}
addEvent(对象1,"mousedown",show);
addEvent(对象2,"mousedown",show);



其实个人不喜欢IE的addEvent方法,在调用函数中的this不是注册的对象而是window,很不方便
推荐使用改造过的0级DOM的事件注册方法,既对象.onXXXX = xxx;的方式

可以去参考下Jquery等的源码,看看里面的事件注册方式,都是跨浏览器的,而且对调用函数的作用域与event对象都进行了统一
tmdwawa 2010-03-25
  • 打赏
  • 举报
回复
大哥,那删除怎么办,没有句柄..删不了绑定的东西....
lianqin7 2010-03-25
  • 打赏
  • 举报
回复
可以用对象1和对象2的某个属性映射到需要的参数 或者直接使用某个属性,然后在show函数里面调用这个属性就可以了
tmdwawa 2010-03-25
  • 打赏
  • 举报
回复
这样本来也可以.但是如何删除,对象的事件???
lianqin7 2010-03-25
  • 打赏
  • 举报
回复
addEvent(对象1,"mousedown", function (){show('参数1')});
addEvent(对象2,"mousedown", function (){show('参数2')});

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧