क्रॉस-पोस्टिंग Bind to all namespaces of custom jquery event
से triggerAll
बजाय 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);
, दी की वजह से कैसे jQuery नेमस्पेसिंग ट्रिगर ट्रिगर "रूट" घटना वास्तव में namespaced संस्करणों आग संभालती , इसलिए आपको उम्मीद है कि आपको /
जैसे डेलीमीटर के लिए किसी अन्य चरित्र का उपयोग करने की आवश्यकता होगी, और फिर अपनी घटनाओं की घोषणा करें:
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], '/');
});
आप वास्तव में क्या करने की कोशिश कर रहे हैं? – Evan
एक jquery प्लग-इन नामित परिवर्तन घटनाओं को ट्रिगर करता है (change.channel, change.selected और अन्य)। यदि कोई बदलाव ईवेंट ट्रिगर किया गया है तो मैं एक कार्रवाई करना चाहता हूं। मैं सभी संभावित नामस्थानों को हार्ड कोड नहीं करना चाहता हूं। –
पोस्ट करने के बाद बस आपके प्रश्न पर आया [मेरा] (http://stackoverflow.com/questions/12590231/bind-to-all-namespaces-of-custom-jquery-event)। मैं यह भी जानना चाहूंगा कि यह संभव है या नहीं। – jschr