2012-06-22 7 views
7

जेएस में नेस्टेड कॉलबैक करने के बजाय जावास्क्रिप्ट (या jquery) के साथ एक कस्टम ईवेंट को फायर करें, तो मैं अपनी खुद की कस्टम घटनाओं को आग और सुनना चाहता हूं। मुझे डीओएम तक पहुंचने की आवश्यकता नहीं है या नहीं।जब मेरा फ़ंक्शन

function doSomething(){ 
//... 
$.trigger('finished-doSomething'); //fire the event 'finished-doSomething' 
} 

//when the event 'finished-doSomething' is fired -> execute the function in the second param 
$.live('finished-doSomething', function(){ 
    alert("I finished-doSomething"); 
}); 

यह करने के लिए संभव है कि सामान्य जावास्क्रिप्ट कोड के साथ या jQuery की तरह एक पुस्तकालय के साथ: यहाँ एक उदाहरण है? यदि नहीं, नेस्टेड कॉलबैक से बचने के लिए एक अच्छा तरीका क्या है?

धन्यवाद!

उत्तर

15

ठीक है, आप कुछ सामान्य तत्वों पर कस्टम ईवेंट का उपयोग कर सकते हैं, document.body कहें।

// Subscribe 
$(document.body).on('nifty.event', function() { 
    // Handle it 
}); 

// Publish 
$(document.body).trigger('nifty.event'); 

Gratuitous live example | source

या डोम से पूर्ण डिस्कनेक्शन के लिए, कुछ पब/उप jQuery प्लग-इन, like this one हैं।

0
$('#foo').on('custom', function(event, param1, param2) { 
    alert(param1 + "\n" + param2); 
}); 
$('#foo').trigger('custom', ['Custom', 'Event']); 

स्रोत: http://api.jquery.com/trigger/

संबंधित मुद्दे