यह प्रश्न jQuery प्लगइन्स और अन्य स्वयं निहित जावास्क्रिप्ट स्निपेट विकसित करने के प्रयोजनों के लिए है, जिन्हें संगतता के लिए अन्य स्क्रिप्ट फ़ाइलों को संशोधित करने की आवश्यकता नहीं है।event.preventDefault() को कॉल करने के बाद एक डिफ़ॉल्ट कार्रवाई का आह्वान करने के लिए एक [सार्वभौमिक] तरीका है?
हम सभी जानते हैं कि event.preventDefault() डिफ़ॉल्ट ईवेंट को रोक देगा ताकि हम एक कस्टम फ़ंक्शन चला सकें। लेकिन क्या होगा यदि हम इसे देरी से पहले डिफ़ॉल्ट ईवेंट करना चाहते हैं तो क्या होगा? मैंने डिफ़ॉल्ट कार्रवाई को दोबारा शुरू करने के लिए विभिन्न, केस-विशिष्ट निंजा चाल और कामकाज देखा है, लेकिन जैसा कि मैंने कहा, मेरी रुचि डिफ़ॉल्ट रूप से फिर से ट्रिगर करने के लिए सार्वभौमिक तरीके से है, और किसी मामले पर डिफ़ॉल्ट ट्रिगर्स से निपटने के लिए नहीं है- मामले के आधार पर।
$(submitButton).click(function (e) {
e.preventDefault();
// Do custom code here.
e.invokeDefault(); // Imaginary... :(
});
फॉर्म सबमिशन के रूप में सरल कुछ भी के लिए, कोई सार्वभौमिक उत्तर नहीं लगता है। $(selector).closest("form").submit()
वर्कअराउंड मानता है कि डिफ़ॉल्ट क्रिया मानक फॉर्म सबमिशन है, और ASP.NET में __doPostBack()
फ़ंक्शन की तरह कुछ बेकार नहीं है।
$(submitButton).click(function (e) {
e.preventDefault();
// Do custom code here.
var javascriptCommand = e.currentTarget.attributes.href.nodeValue;
evalLinkJs(javascriptCommand);
});
function evalLinkJs(link) {
// Eat it, Crockford. :)
eval(link.replace(/^javascript:/g, ""));
}
मुझे लगता है मैं संभाल करने के लिए विशेष मामलों लेखन शुरू कर सकता है लगता है: लागू ASP.NET कॉलबैक के अंत करने के लिए, यह सबसे करीब मैं एक सार्वभौमिक, सेट-यह और भूल जाते हैं, यह समाधान पर आए हैं है window.location
के साथ सामान्य लिंक रीडायरेक्ट करते हैं, लेकिन फिर हम कीड़े का एक नया नया खोल खोल रहे हैं - डिफ़ॉल्ट घटना आमंत्रण के लिए अधिक से अधिक मामलों पर पिलिंग समाधान से अधिक समस्याएं पैदा करता है।
तो इसके बारे में कैसे? जादू बुलेट किसके लिए खोज रहा है?
मैं वास्तव में आप क्या करने की कोशिश कर रहे हैं क्या नहीं मिल ... घटना नहीं है है हैंडलर कोड रन * से पहले * डिफ़ॉल्ट कार्रवाई होती है (उदाहरण के लिए 'सबमिट' ईवेंट हैंडलर का कोड वास्तव में सबमिट किए जाने से पहले चलाएगा ... क्या वह नहीं है जिसे आप प्राप्त करने का प्रयास कर रहे हैं?) –
क्या आपका कस्टम कोड असीमित है? यह समझा सकता है कि आपको ऐसा क्यों लगता है कि आपको ऐसी विधि की आवश्यकता है, लेकिन यह काल्पनिक तरीका भी आपकी समस्या का समाधान नहीं करेगा। – agradl
आपको निश्चित रूप से अपनी इच्छित चीज़ों के बारे में अधिक स्पष्ट होने की आवश्यकता है। यदि आप हैंडलर के भीतर कोड चलाने के लिए चाहते हैं, तो वह कोड "डिफ़ॉल्ट" व्यवहार से पहले चलता है। –