Javascript 在单击时编写类似jQuery的回调
在jQuery中,可以使用如下回调:Javascript 在单击时编写类似jQuery的回调,javascript,jquery,callback,Javascript,Jquery,Callback,在jQuery中,可以使用如下回调: $('#btn').on('click', function() { // code }); 我怎样才能写出像I.e foo.on('bar', function() { // code }); foo.on('buzz', function() { //code }); ? 谢谢。这是jQuery中的一条有效语句,用于调用触发事件所需的方法 像 下面的文章将很有帮助 如何在jQuery中创建自定义事件 jQuery的.
$('#btn').on('click', function() {
// code
});
我怎样才能写出像I.e
foo.on('bar', function() {
// code
});
foo.on('buzz', function() {
//code
});
?
谢谢。这是jQuery中的一条有效语句,用于调用触发事件所需的方法 像
下面的文章将很有帮助 如何在jQuery中创建自定义事件 jQuery的.trigger方法是关键。您可以在任意点触发具有新类型名称和任意数据的事件,例如
$.event.trigger({
type: "newMessage",
message: "Hello World!",
time: new Date()
});
处理程序现在可以订阅“newMessage”事件,例如
$(document).on("newMessage", newMessageHandler);
就像这样:
var eventBus = function () {
var supportedEvents = ['bar', 'buzz'];
var subscribers = {};
for (var i = 0; i < supportedEvents.length; i++) {
subscribers[supportedEvents[i]] = [];
}
return {
on: function (event, action) {
subscribers[event].push(action);
},
trigger: function (event) {
var funsToCall = subscribers[event] || []; // empty array if unsupported event
for (var i = 0; i < funsToCall.length; i++) {
funsToCall[i](); // calling a function
}
}
}
}
更重要的是,什么是
bar
和buzz
:)你应该看看。对不起,这段代码不是jQuery,但我想要的是类似它的东西<在我的例子中,code>foo是一个我想写的验证模块<代码>'bar'和'buzz'
是来自验证模块的各种结果(因此它们可能是'success'
或'failure'
)。我只是想把这个问题概括一下……假设foo
是一个jQueryinstance@David对假设foo
是jQuery包装对象,您没有回答这个问题。
var eventBus = function () {
var supportedEvents = ['bar', 'buzz'];
var subscribers = {};
for (var i = 0; i < supportedEvents.length; i++) {
subscribers[supportedEvents[i]] = [];
}
return {
on: function (event, action) {
subscribers[event].push(action);
},
trigger: function (event) {
var funsToCall = subscribers[event] || []; // empty array if unsupported event
for (var i = 0; i < funsToCall.length; i++) {
funsToCall[i](); // calling a function
}
}
}
}
var foo = eventBus();
foo.on('bar', function () {
console.log('bar');
});
foo.on('buzz', function () {
console.log('buzz');
});
foo.trigger('bar'); // prints 'bar' to the console
foo.trigger('buzz'); // prints 'buzz' to the console