JQuery自定义事件处理程序,在事件名称中包含通配符

时间:2015-07-03 01:22:12

标签: jquery event-handling

我一直在尝试在自定义事件处理程序中实现通配符名称。固定的事件名称工作正常,但我希望处理程序能够处理许多不同的场景。

// 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]")

事件处理程序可以实现吗?

由于

2 个答案:

答案 0 :(得分:2)

这是不可能的,但您可以通过以下答案执行非常类似的操作: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中),但在事件名称中放置状态不是一种非常可行的方法。

答案 1 :(得分:-1)

尝试以偏见的方式,使用常规的旧事件信号:

$('[name^="beginning"]').click(function(){
    alert('You did it!');
});