la publicación cruzada de Bind to all namespaces of custom jquery event
Trate triggerAll
en lugar de trigger
:
(function($) {
$.fn.triggerAll = function(topics, data, delimiter) {
return this.each(function() {
var $this = $(this), chain = [], t = '';
delimiter = (delimiter || '.');
// rebuild chain
$.each(topics.split(delimiter), function(i,n) {
t += (i == 0 ? '' : delimiter) + n;
chain.push(t);
});
// append/prepend original topic?
data = (data || []);
data.push(topics);
$.each(chain, function(i,t) {
$this.trigger(t, data);
});
});
};
})(jQuery);
Por supuesto, debido a la forma en jQuery se encarga de desencadenar los espacios de nombre, que activa el evento "raíz" en realidad dispara las versiones de espacios de nombres , para obtener lo que espera necesitaría usar otro caracter para el delimitador, como /
, y luego declarar sus eventos como:
var $o = $('#whatever');
// this will be triggered for all events starting with 'root'
$o.on('root', function() { console.log(Array.prototype.slice.call(arguments, 0)); });
// some arbitrary way to fire custom events
$o.on('click', function() {
$o.triggerAll('root/custom1/subA', ['1st', '2nd'], '/');
$o.triggerAll('root/custom2', [3, 4, 5], '/');
});
¿qué estás tratando de hacer exactamente? – Evan
Un complemento de jquery desencadena eventos de cambio espaciados (change.channel, change.selected y otros). Me gustaría hacer una acción si uno de los eventos de cambio se ha activado. No acostumbro codificar todos los espacios de nombres posibles. –
Acabo de encontrar su pregunta después de publicar [mine] (http://stackoverflow.com/questions/12590231/bind-to-all-namespaces-of-custom-jquery-event). También me gustaría saber si esto es posible. – jschr