2015-07-03 3 views
1

Я пытаюсь реализовать подстановочное имя в настраиваемом обработчике событий. Фиксированное имя события работает нормально, но я бы хотел, чтобы обработчик обрабатывал несколько различных сценариев.Специальный обработчик событий JQuery с подстановочным знаком в имени события

// 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

Это невозможно, но вы можете сделать что-то очень похожее на следующий ответ здесь: 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!'); 
}); 
+0

Он хочет, чтобы событие было подстановочным знаком, а не именем элемента. – Barmar

Смежные вопросы