दिलचस्प पोस्ट
स्थैतिक तरीकों और उनके ओवरराइडिंग जावा: निष्पादक सेवा कि एक निश्चित कतार आकार के बाद सबमिशन पर ब्लॉक करता है ValueError: स्ट्रिंग को फ्लोट: id में परिवर्तित नहीं कर सका प्रदर्शित करने के लिए मुझे PHP त्रुटियाँ कैसे मिलेंगी? क्या नोड.जेएस ब्राउज़र में विंडो ऑब्जेक्ट के बराबर है आसानी से ascii- कला पाठ को मुद्रित करने के लिए कैसे? JQuery के साथ, मैं एक टेक्स्ट फ़ील्ड के पहले अक्षर को कैपिटल कैसे कर सकता हूं, जबकि उपयोगकर्ता उस फ़ील्ड को अभी भी संपादित कर रहा है? नियमित अभिव्यक्ति \ p {L} और \ p {N} जावा में कानूनी पहचानकर्ता क्या मुझे / एमडी या / एमटी के साथ संकलित करना चाहिए? जावा – एक विन्यास फाइल से एन्क्रिप्ट / डिक्रिप्ट उपयोगकर्ता नाम और पासवर्ड Asp.NET MVC 3 में JSON.NET डिफ़ॉल्ट JSON सीरियललाइज़ के रूप में उपयोग करना – क्या यह संभव है? कार्ड शफ़्लिंग सी # मैं .NET में एक यूएसबी वेबकैम से कैसे जुड़ूं? कस्टम फ़ॉन्ट और XML लेआउट (एंड्रॉइड)

क्या jQuery के लिए एक हैंडल है। Delegate ('hover')?

मैं उपयोग करने का प्रयास कर रहा हूं:

$('mydiv').delegate('hover', function() { $('seconddiv').show(); }, function() { //For some reason jQuery won't run this line of code $('seconddiv').hide(); }); 

Solutions Collecting From Web of "क्या jQuery के लिए एक हैंडल है। Delegate ('hover')?"

User113716 का महान उत्तर अब jQuery 1.9+ में काम नहीं करेगा, क्योंकि छद्म इवेंट hover अब समर्थित नहीं है ( नवीनीकरण मार्गदर्शिका )।

इसके अलावा जब से बाध्यकारी घटनाओं के लिए jQuery 3.0 delegate() आधिकारिक तौर पर पदावनत किया गया है, इसलिए कृपया सभी ईवेंट बाध्यकारी प्रयोजनों के लिए on() (डॉक्स) का उपयोग करें।

माउसरेटर माउसलेवे के साथ hover जगह और on() सिंटैक्स on() स्विफ्ट करके आप आसानी से उपयोगकर्ता 113716 का समाधान माइग्रेट कर सकते हैं:

 $('mydiv').on('mouseenter mouseleave', 'seconddiv', function(event) { $(this).toggle( event.type === 'mouseenter' ); }); 

यदि आपकी समस्या एक सरल toggle से अधिक जटिल है, तो मैं दो अलग-अलग ईवेंट बाध्य करने का सुझाव देता हूं:

 $('mydiv').on('mouseenter', 'seconddiv', function( event ) { // do something }).on('mouseleave', 'seconddiv', function( event ) { // do something different }); 

एनबी: चूंकि वेटर 1 v.1 में हटा दिया गया था और v1.7 में on() को पेश किया गया था, इसलिए delegate() का उपयोग करते हुए समाधान की कोई वास्तविक आवश्यकता नहीं है – लेकिन अगर आपको किसी कारण से यह पसंद है; यह अभी भी है (अभी के लिए) और काम करता है:

 $('mydiv').delegate('seconddiv','mouseenter mouseleave', function(event) { $(this).toggle( event.type === 'mouseenter' ); }); 

delegate() (डॉक्स) के साथ , आप उसे किसी कंटेनर में निर्दिष्ट करते हैं, और पहला तर्क वह तत्व होता है, जिसे ईवेंट को ट्रिगर करना चाहिए।

इसके अलावा, .delegate() केवल एक फ़ंक्शन स्वीकार करता है, इसलिए hover ईवेंट के लिए आपको ईवेंट show() (डॉक्स) निर्धारित करने के लिए ईवेंट का परीक्षण करने की आवश्यकता है या hide() (डॉक्स)

 $('.someContainer').delegate('.someTarget','hover', function( event ) { if( event.type === 'mouseenter' ) $('seconddiv').show(); else $('seconddiv').hide(); }); 

शो / छिपाने के लिए, इसे लिखने के लिए एक छोटा रास्ता toggle() (डॉक्स) का उपयोग करना है , जो एक स्विच तर्क स्वीकार कर सकते हैं जहां true मतलब show और false अर्थ hide :

 $('.someContainer').delegate('.someTarget','hover', function( event ) { $('seconddiv').toggle( event.type === 'mouseenter' ); }); 

नोट करें कि mouseenter इवेंट को jQuery 1.4.3 रूप में रिपोर्ट किया गया है। यदि आप 1.4.2 का उपयोग कर रहे हैं, तो उसे mouseover रूप में सूचित किया जाएगा


संपादित करें:

अगर मैं नीचे आपकी टिप्पणियों को समझ रहा हूं, तो आपके पास ऐसा कुछ होगा (पाठ्यक्रम के उचित चयनकर्ताओं का उपयोग करके)।

 $('mydiv').delegate('seconddiv','hover', function( event ) { $(this).toggle( event.type === 'mouseenter' ); }); 

.delegate() में एक संभाल आउट नहीं है। इसके अलावा, आपको पहले पैरामीटर के साथ तत्व को निर्दिष्ट करने की आवश्यकता है

आप ऐसा कुछ करने की कोशिश कर सकते हैं, हालांकि:

 $('table').delegate('tr', 'hover', function() { $(this).toggle(); }); 

संपादित करें: गलत सूचना निकाल दी गई

यदि आप प्रतिनिधिमंडल के बिना hover() विधि का उपयोग करना चाहते हैं, तो काम कर रहे कोड इस तरह दिखाई देगा:

 $('#mydiv').hover(function() { $('#seconddiv').show(); }, function() { $('#seconddiv').hide(); }); 

सबसे पहले, delegate एक बच्चे को एक ईवेंट हैंडलर प्रदान करना है, इसलिए आपको पहले चयनकर्ता को निर्दिष्ट करना होगा। यदि आपको यह सुनिश्चित करने की आवश्यकता है कि यह ईवेंट हैंडलर गतिशील रूप से जोड़ा गया तत्वों के लिए मौजूद है, तो मैं इस स्थिति में mouseenter और mouseleave

 $('#mydiv').live('mouseenter', function() { $('#seconddiv').show(); }).live('mouseleave', function() { $('#seconddiv').hide(); }); 

मैं जानता हूं कि ओ.पी. एक delegate समाधान चाहता था (ऐसा मैं था जब मैंने इस प्रश्न को दबा दिया …)

लेकिन आगे की जांच के बाद मुझे पता चला कि जेएस / जेपीआरआई कोड के बिना भी इसे हासिल करना संभव है

आपको केवल सीएसएस का एक सा है

 .someContainer .seconddiv{ display : none; } .someContainer:hover .seconddiv{ display : block; } 

आईएनएमओ यह एक अधिक कुशल / लिगथवेफेड समाधान है