आप माता-पिता नोड, f.ex (jQuery) पर फिर से ट्रिगर कर सकते हैं एक ही घटना वस्तु। आपको बुलबुले में एक ही घटना गुण कब्जा करने के लिए (f.ex e.pageX
) में पहली घटना वस्तु कॉपी और ट्रिगर में इसे पारित करने की आवश्यकता होगी:
var copy = $.extend(true, {}, e);
setTimeout(function() {
$(copy.target.parentNode).trigger(copy);
},500);
e.stopPropagation();
डेमो: http://jsfiddle.net/GKkth/
संपादित
अपनी टिप्पणी के आधार पर, मुझे लगता है कि आप की तरह कुछ के लिए देख रहे हैं:
$.fn.bindFirst = function(type, handler) {
return this.each(function() {
var elm = this;
var evs = $._data(this).events;
if (type in evs) {
var handlers = evs[type].map(function(ev) {
return ev.handler;
});
$(elm).unbind(type).on(type, function(e) {
handler.call(elm, e, function() {
handlers.forEach(function(fn) {
fn.call(elm);
});
});
});
}
});
};
यह प्रोटोटाइप आपको "प्रीमियम हैंडलर" को बांधने की अनुमति देता है जिसमें next
फ़ंक्शन होता है जो सभी पिछले हैंडलर को उसी तत्व पर निष्पादित करेगा जब आप चाहें। है जैसे कि यह प्रयोग करें:
$('button').click(function() {
console.log('first');
}).click(function() {
console.log('second');
}).bindFirst('click', function(e, next) {
console.log('do something first');
setTimeout(next, 1000); // holds the other handlers for 1sec
});
डेमो: http://jsfiddle.net/BGuU3/1/
जब मैं लंगर के लिए क्लिक करें, मेरे समारोह (DB करने के लिए मिलता है) नहीं निष्पादित करने का समय। मुझे लगता है कि इसे रोकने के लिए जरूरी है –
पर प्रजनन को रोकने के लिए आपको संभावित उपयोगकर्ता अनुभव को नुकसान पहुंचाना चाहिए: उपयोगकर्ता कुछ पर क्लिक करता है और डेटाबेस कॉल पूरा होने तक कुछ भी नहीं होता है। सबसे बुरा मामला, यह उत्तरदायी दिखने का लंबा समय हो सकता है। – ehdv
यह एक बुरा जवाब है क्योंकि प्रचार को रोकना अक्सर आवश्यक होता है जब आपके पास एक ही तत्व पर कई घटनाएं बुलबुले होती हैं। यह विधि पूरी तरह से मौजूद है। – kjdion84