2011-06-07 11 views
7

कहें कि मेरे पास एक ऐसा फ़ंक्शन है जिसे $(document).mousemove() पर निष्पादित करने की आवश्यकता है। तब मैं तय करता हूं कि मेरे पास एक और कार्य है जिसे एक ही घटना पर निष्पादित करने की आवश्यकता है। शायद ये दो कार्य असंबद्ध हैं, इसलिए मॉड्यूलरिटी के नाम पर, $(document).mousemove() के लिए दो अलग-अलग फ़ंक्शन सुन सकते हैं।वही jQuery ईवेंट, अलग फ़ंक्शन

क्या यह बुरा फॉर्म है? क्या प्रदर्शन प्रभाव हैं?

उत्तर

2

jQuery स्वचालित रूप से एक श्रृंखला से घटनाओं में संलग्न कर देगा, इसलिए एक ही घटना के लिए डुप्लिकेट हैंडलर परिभाषाओं होने के साथ कोई समस्या नहीं है। यदि आप दो हैंडलर परिभाषाओं को एक उचित रूप से जोड़ सकते हैं तो उस दृष्टिकोण के साथ निश्चित रूप से कुछ भी गलत नहीं है, लेकिन संभवत: पठनीयता के अलावा ऐसा करने में थोड़ा स्पष्ट मूल्य नहीं है।

0

क्या आप बस ऐसा नहीं कर सकते? जब तक मैं अपने प्रश्न गलतफहमी हूँ

$(document).mousemove(function(){ 
    callOneFunction(); 
    callTwoFunction(); 
}); 
+0

वास्तव में मैं ऐसा कर सकता है, कि मेरे सवाल ... :) –

+1

नाथन टेलर उसके जवाब में बताते हैं के रूप में, jQuery एक श्रृंखला में घटनाओं में संलग्न कर देगा था। मैं इस विधि को स्पष्ट करता हूं कि यह स्पष्ट है कि कौन से कार्यों को बुलाया जा रहा है और किस क्रम में। विशेष रूप से यदि अन्य लोग आपका कोड पढ़ रहे होंगे (मैं एक टीम प्रोजेक्ट्स पर काम करता हूं, इसलिए पूरे स्थान पर इवेंट हैंडलर होने पर सभी जगह लोगों को पागल कर दिया जाएगा) :) –

+0

हाँ यह निश्चित रूप से सच है। जवाब के लिए धन्यवाद। मुझे घटनाओं के भीतर से बुलाए जाने वाले कार्यों को लिखना शुरू करना चाहिए, क्योंकि घटना में कोड सीधे होने के विपरीत। –

0
बेशक

यदि आप एक घटना मैं कुछ अपने डिजाइन के साथ गलत कह सकते हैं कि सुनने के 1000 कार्यों सेट करने का निश्चय, लेकिन मेरे लिए दो funcs बस ठीक हैं

मैं क्रम में, रख-रखाव रखने के लिए namespaced संचालकों के साथ जाना होगा कम से कम अगर सेंट जॉन jQuery में इसे डिजाइन कुछ मामलों में उपयोग करते हुए इसके लायक तो आप ऐसा करते हैं:

$(elem).bind('mousemove.ns1', funcOne); 
$(elem).bind('mousemove.ns2', funcTwo); 

इस तरह से आप एक एक करके सक्षम अनबाइंड एक के रूप में अच्छी तरह से

$(elem).unbind('mousemove.ns1'); 
$(elem).unbind('mousemove.ns2'); 
हैं

या यहां तक ​​कि

$(elem).unbind('.ns1'); 
संबंधित मुद्दे