如何给自己创建的js对象赋予事件?

leekkeek 2012-10-09 04:16:16
我现在要自己创建一个js对象,用于封装一个activeX插件.
这个ActveX控件有一个事件,在HTML中可以直接使用的.

现在我想做一个js对象,封装这个控件,并且为这个js对象注册一个事件.

现在没有搞清楚,自己创建的js对象可以有事件么?如何写事件代码呢?
...全文
199 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kongxh1218 2012-10-11
  • 打赏
  • 举报
回复
你的需求可以实现:

<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script>
$(function(){
// 自定义一个对象
var obj = {};

// 给这个对象绑定一个事件,事件的名称可以随意
$(obj).bind("myClick", function(){
alert("触发了obj的myClick事件");
});

// 点击test按钮,触发这个obj的myClick事件
$("#test").click(function(){
$(obj).trigger("myClick");
});
});
</script>
<body>
<input id="test" value="test" type="button" />
</body>
未知数 2012-10-10
  • 打赏
  • 举报
回复
事件的实现机理很简单的,类似回调,举例:
function obj()
{
this.show=function()
{
if(this.beforeshow) this.beforeshow();
document.body.innerHTML="<div>测试控件</div>";
if(this.onshow) this.onshow();
}
}
把obj看作一个控件类,该类就实现了两个事件,beforeshow与onshow,分别在控件显示前和显示后执行

使用时:
var test=new obj();
test.beforeshow=function(){alert('控件开始加载');}
test.onshow=function(){alert('控件加载成功');}
test.show();

这样控件显示前后就会分别执行两个事件函数了
KK3K2005 2012-10-10
  • 打赏
  • 举报
回复
看下 观察者模式
就是事件实现的原理
  • 打赏
  • 举报
回复
可以。不是语法问题,而是思路问题。

要创建有激发事件的对象,那你同样就得创建能发起事件的环境。否则,你的事件处理函数就英雄无用武之地。

所以你可以先给JS对象(比如叫Theforever_csdn)增加一个方法,比如on_Theforever_csdn(可选对事件传入参数,比如当类似键盘事件那样有多种值内容时),在里面写这个事件应该处理的任务即可。

然后需要在JS里创建能激发这个事件处理函数的“事件驱动机制”。

其实很简单:

假如你想在变量Theforever_csdn.name或对象Theforever_csdn发生改变时激发你这个事件,那么你可以作一个方法把改变这个目标对象的任务由它完成,同时在改变完成后,结束之前去调用一下 Theforever_csdn.on_Theforever_csdn(可选参数); 就可以了。

当你以后处理那个变量或对象,通过这样封装的方法去做,自然可以激发你的那个事件。

但在你实际编写时,要根据实际应用情况,注意选择是处理对象类还是对象实体。

87,992

社区成员

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

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