this question के समान, लेकिन इसे एक कदम आगे ले जाना। मैं आइटम का एक समूह है, जो मैं निम्नलिखित तरीके से निपटने कर रहा हूँ से बाहर क्लिक का पता लगाने के लिए करना चाहते हैं:बाहर तत्व क्लिक करें पता?
$('#menu div').live('click', function() {
// Close other open menu items, if any.
// Toggle the clicked menu item.
$('body').one('click', function(event) {
// Hide the menu item.
event.stopPropagation();
});
});
यह एक आकर्षण की तरह काम करता है, दुर्भाग्य से, जब एक और मेनू आइटम खुला है और एक दूसरा क्लिक किया जाता है, दूसरे आइटम को खोलने के लिए दो क्लिक की आवश्यकता है। पहला क्लिक करें जो पहले मेनू आइटम को खोलता है, दूसरा दूसरा मेनू आइटम दिखाता है।
"सही" व्यवहार निम्नलिखित तरीके से काम करता है:
- क्लिक करने से एक मेनू आइटम यह खुलता है।
- उसी मेनू आइटम (या उसके बच्चों) पर क्लिक करना इसे बंद कर देता है।
- किसी अन्य मेनू आइटम पर क्लिक करने से पहले बंद हो जाता है, दूसरा खुलता है।
- (खुले) मेनू आइटम से दूर क्लिक करना उन्हें बंद कर देता है। ,
// Captures click on menu items in spite of the not. $('*').not('#menu *').one('click', function() { // Hide menu } $('*:not(#menu)').one('click', function() { // Hide menu }
हमेशा की तरह किसी भी मदद के लिए धन्यवाद:
मैं ऊपर $('body').one()
आदेश छोटी सफलता के साथ मेनू आइटम पर क्लिक करता है की अनदेखी करने के स्थान पर निम्नलिखित की कोशिश की है!
'मेनू क्लिक हैंडलर के बाहर क्लिक करें body' हैंडलर चलती का उद्देश्य क्या है? ऐसा लगता है कि मेनू आइटम खोले जाने के बाद इसे एक ही कार्य पूरा करना पड़ता है (प्रत्येक शरीर को पकड़ने के ऊपरी हिस्से के बिना मेनू को कभी खोला नहीं जाता है)। या क्या मैं कुछ न कुछ भूल रहा हूं? – chuckg
यह एक उचित बिंदु है; जब भी उपयोगकर्ता मेनू आइटम पर अनावश्यक क्लिक करता है तो मैं किसी ईवेंट को बाध्यकारी और अनबाइंड करने के ऊपरी हिस्से पर विचार करता हूं। आम तौर पर किसी अन्य पृष्ठ पर जाने से अलग पृष्ठ पर अधिक क्लिक नहीं किया जाएगा, इस मामले में अतिरिक्त क्लिक हैंडलर पूरी तरह से अप्रासंगिक है। दिन के अंत में दोनों आपकी आवश्यकताओं के आधार पर ठीक हैं, इसलिए यदि आप अपनी आवश्यकताओं के अनुरूप हैं तो आप एक हैंडलर से चिपके रह सकते हैं। –
e.target आईई पर काम नहीं करता है ... –