我一直在尝试在自定义事件处理程序中实现通配符名称。固定的事件名称工作正常,但我希望处理程序能够处理许多不同的场景。
// 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]")
事件处理程序可以实现吗?
由于
答案 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!');
});