2012-08-03 14 views
5

साथ ईवेंट निकालें मैं इस है:jQuery या जावास्क्रिप्ट

$(function(){ 
    //remove keydown doSomething2 
    $("body").keydown(doSomething1); 
}); 

अन्य ध्यान में रखते हुए मैं इस है:

$(function(){ 
    //remove keydown doSomething1 
    $("body").keydown(doSomething2); 
}); 

कैसे क्या टिप्पणी में है करना है? मेरे वर्तमान कोड के साथ, doSomething1 और doSomething2 दोनों को बुलाया जाता है। मैं उस व्यक्ति को अक्षम करना चाहता हूं जिसकी मुझे आवश्यकता नहीं है।

+0

मैं ईवेंट हैंडलर रखने की सलाह देते हैं और एक चर बताता है कि क्या करते हैं जब एक कुंजी दबाने जोड़ें। –

उत्तर

9

jQuery के साथ एक घटना श्रोता निकालने के लिए आपको .off() उपयोग कर सकते हैं:

$("body").off("keydown", doSomething2); 

याद रखें keydown method सिर्फ .on("keydown", ...) के लिए एक शॉर्टकट है।

हालांकि, उन्हें "अक्षम" करने के लिए, केवल एक हैंडलर होना आसान हो सकता है जो वर्तमान चयनित दृश्य के आधार पर अलग-अलग चीजों को निष्पादित करता है, या दोनों को बाध्य किया जाता है और प्रत्येक को संक्षिप्त जांच के साथ कि सही दृश्य वर्तमान में चुना गया है ।

4

तो doSomething2 एक समारोह संदर्भ है, तो आप jQuery बाध्य ईवेंट हैंडलर्स को दूर करने के .off() (jQuery 1.7+) या .unbind() उपयोग कर सकते हैं:

$('body').off('keydown', doSomething2); 

// or 

$('body').unbind('keydown', doSomething2); 

ध्यान दें कि निष्पादन के लिए एक कारक हो जाएगा। यदि ईवेंट हैंडलर को अनबिंड करने के लिए कोड पहले चलाया जाता है तो इसका कोई प्रभाव नहीं पड़ेगा। सामान्य रूप से, jQuery ईवेंट हैंडलर को क्रमबद्ध क्रम में ट्रिगर किया जाता है, इसलिए यदि आपके प्रश्न में पहला कोड स्निपेट पहले निष्पादित किया जाता है, तो यह दृष्टिकोण काम नहीं करेगा (आपको इसे फिर से ऑर्डर करने की आवश्यकता होगी)।

4

jQuery का उपयोग कर नीचे के रूप में इस प्रयास करें:

$(function(){ 
    // this would remove keydown from body 
    $("body").unbind('keydown', doSomething2); 
}); 
संबंधित मुद्दे