JQuery 在事件名称中使用通配符的自定义事件处理程序
JQuery custom event handler with wildcard in the event name
我一直在尝试在自定义事件处理程序中实现通配符名称。固定的事件名称工作正常,但我希望处理程序能够处理许多不同的场景。
// this works fine
this.on("custom_event_name", function(e) {
//some stuff
));
这也有效
// this also works
this.on("event_"+foo, function(e) {
//some stuff
));
我一直在努力实现的是类似于通配符在 JQuery 选择器中的工作方式
$("[class^=bar]")
事件处理程序可以做到这一点吗?
谢谢
这是不可能的,但您可以按照此处的答案进行非常相似的操作:How to bind to all custom events in jQuery
但是有一个不同的系统来处理这类事情,我认为这是一个更好的结构(也更有效)。您要做的是将数据传递给 trigger
调用。所以你可以触发这样的事件:
a.trigger('custom_event', ['foo']);
或者这个:
a.trigger('custom_event', ['bar']);
然后您可以设置一个事件处理程序来测试传递的数据:
this.on('custom_event', function(e, type) {
if (type === 'foo') {
//...
} else if (type === 'bar') {
//...
}
});
除此之外还有其他处理状态的方法(例如 DOM),但是将状态放在事件名称中并不是一个非常可行的方法。
尝试偏远地区的方式,使用常规的旧事件信号:
$('[name^="beginning"]').click(function(){
alert('You did it!');
});
我一直在尝试在自定义事件处理程序中实现通配符名称。固定的事件名称工作正常,但我希望处理程序能够处理许多不同的场景。
// this works fine
this.on("custom_event_name", function(e) {
//some stuff
));
这也有效
// this also works
this.on("event_"+foo, function(e) {
//some stuff
));
我一直在努力实现的是类似于通配符在 JQuery 选择器中的工作方式
$("[class^=bar]")
事件处理程序可以做到这一点吗?
谢谢
这是不可能的,但您可以按照此处的答案进行非常相似的操作:How to bind to all custom events in jQuery
但是有一个不同的系统来处理这类事情,我认为这是一个更好的结构(也更有效)。您要做的是将数据传递给 trigger
调用。所以你可以触发这样的事件:
a.trigger('custom_event', ['foo']);
或者这个:
a.trigger('custom_event', ['bar']);
然后您可以设置一个事件处理程序来测试传递的数据:
this.on('custom_event', function(e, type) {
if (type === 'foo') {
//...
} else if (type === 'bar') {
//...
}
});
除此之外还有其他处理状态的方法(例如 DOM),但是将状态放在事件名称中并不是一个非常可行的方法。
尝试偏远地区的方式,使用常规的旧事件信号:
$('[name^="beginning"]').click(function(){
alert('You did it!');
});