在JavaScript中创建事件,比如c#
Creating events in JavaScript like C#
我主要用c#写代码。但是,我正在使用一些JavaScript。我在JavaScript中定义了一个类,如下所示:
function Item(id, name) {
this.ID = id;
this.Name = name;
// define event submitCompleted
this.submit = function() {
// When the submission is completed, fire "submitCompleted" event.
};
}
我的挑战是,我不知道如何在JavaScript中创建和触发自定义事件。如果这是c#,我会这样做:
public class Item
{
public string ID { get; set; }
public string Name { get; set; }
public Item(string id, string name)
{
this.ID = id;
this.Name = name;
}
public event EventHandler SubmitCompleted;
public void Submit()
{
// Submission logic
SubmitCompleted(this, EventArgs.Empty);
}
}
我如何在JavaScript中做等效的?谢谢你!
function Item(id, name, submitCompleted) {
this.ID = id;
this.Name = name;
this.submitCompleted = submitCompleted;
// define event submitCompleted
this.submit = function() {
// When the submission is completed, fire "submitCompleted" event.
// we are passing 2 arguments to the callback: id and name
submitCompleted(id, name);
};
}
var item = new Item(1, 'some name', function(id, name) {
alert('id = ' + id + ', name = ' + name);
});
item.submit();
你可以像这样在javascript中创建自定义事件.....
<script type="text/javascript">
function Event()
{
this.eventHandlers = new Array();
}
Event.prototype.addHandler = function(eventHandler){
this.eventHandlers.push(eventHandler);
}
Event.prototype.execute = function(args){
for(var i = 0; i < this.eventHandlers.length; i++)
{
this.eventHandlers[i](args);
}
}
function showName()
{
alert("My name is stikiflem.");
}
function getFaveMovie(arg)
{
alert("My favourite movie is: " + arg + ".");
}
function test()
{
//create event
myHandler = new Event();
//add handler
myHandler.addHandler(showName);
myHandler.addHandler(getFaveMovie);
//raise event
myHandler.execute("Ghost in the Shell");
}
</script>
<body>
<input type="button" value="Click to create and execute events"
onClick="test()" />
</body>
使用javascript自定义事件
自定义Javascript事件
如果你喜欢使用jQuery,那就很简单了
//to register an event
$(selector).bind('customEvent', eventHandler)
// to raise an event
$(selector).trigger('customEvent')
如果你在寻找简单的JS方式,那么
var newObj = function(){
var submitHdlr = [];
this.bind = function(handler){
submitHdlr.push(handler);
}
this.submit = function(){
// do something
for(i in submitHdlr)
i(); // raise each handler
}
}
相关文章:
- 分派点击事件并保留击键修饰符
- 模糊事件的Javascript测试
- keyup事件处理程序更改焦点不适用于快速键入
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何使Javascript动态html表及其上的事件
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 使用类从一个标记中双击事件
- 如何在未直接触发的情况下停止事件
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 对iPad上的点击事件反应缓慢
- 事件和状态
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- 从控制器返回后Ajax启动事件激发
- 如何从画布上的某个移动事件中获取X和Y
- JS变量事件?比如onChange
- Angular.js是如何处理事件绑定的,比如"ng-click"
- 在JavaScript中创建事件,比如c#
- 如何从Jquery内部调用Javascript函数来处理一些事件,比如点击链接
- 在c3-angular指令中设置onclick事件为饼状图,比如c3.js库