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!');
});