ठीक है, ऐसा ही होता है।jQuery फायरिंग एक क्लिक के बिना घटना पर क्लिक करें
$('.js-custom-dropdown').find('.custom-dropdown-unfolded').toggle();
$('.custom-dropdown-btn, .custom-dropdown-btn-unfolded').keydown(function(event){
if (event.keyCode === 13) {
openDropdown($(this));
}
}).click(function(){
openDropdown($(this));
});
function openDropdown (element){
element.parents('.js-custom-dropdown').find('.custom-dropdown-unfolded').toggle();
console.log($(this))
}
जब मैं ड्रॉप-डाउन बटन पर क्लिक करें, openDropdown
समारोह एक बार निष्पादित किया जाता है, लेकिन जब मैं टैब बटन और प्रेस के लिए अपने रास्ते में प्रवेश, समारोह दो बार कहा जाता है। मान लीजिए कि चेनिंग के साथ कुछ करना है, लेकिन मैं मानता हूं कि मैं इसके लिए नया हूं और jQuery डिज़ाइन पैटर्न को पूरी तरह से समझ नहीं पा रहा हूं। मैं keydown
हैंडलर में फ़ंक्शन को दो बार कॉल कर सकता हूं और इससे समस्या हल हो जाएगी, लेकिन .. आप जानते हैं :)
क्या आप कृपया बता सकते हैं कि कोड के साथ क्या गलत है और इस तरह के व्यवहार का कारण क्या है?
यह है क्योंकि आप नहीं है:
यहाँ एक सबूत अवधारणा-का-बेला है 2 इवेंट श्रोताओं के लिए - एक कुंजीडाउन के लिए (जो आप एंटर दबाते समय आग लगाएंगे) और दूसरा जब बटन क्लिक किया जाता है (जो मुझे लगता है कि जब आप एंटर दबाते हैं तो आप क्या कर रहे हैं) – Pete