2012-06-29 11 views
24

यहां एक jQuery स्लाइड फ़ंक्शन है जिसे मैंने बटन को स्लाइड करने के लिए होवर पर एक div पर लागू किया है।यदि माउस 2 सेकंड से अधिक के लिए खत्म होता है तो और दिखाएं नहीं?

यह ठीक काम करता है सिवाय इसके कि अब हर कोई इसमें से बाहर निकलता है, यह ऊपर और नीचे बोबिंग रखता है।

मुझे लगा कि अगर मैं इसमें एक या दो सेकंड देरी टाइमर डालता हूं तो यह अधिक समझ में आता है।

स्लाइड को चलाने के लिए फ़ंक्शन को कैसे संशोधित किया जाएगा यदि उपयोगकर्ता दूसरे या दो से अधिक के लिए div पर है?

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js "></script> 
<script type="text/javascript"> 

$("#NewsStrip").hover(
function() { 
    $("#SeeAllEvents").slideDown('slow'); }, 
function() { 
    $("#SeeAllEvents").slideUp('slow'); 
}); 

</script> 
+0

की सटीक अनुलिपि [ jQuery - कैसे प्रतीक्षा करें। होवर() प्रतीक्षा करने के लिए?] (http://stackoverflow.com/questions/1089246/jquery-how-to-tell-hover-to-wait) –

+0

@TJCrowder यदि आप प्रश्न पढ़ते हैं तो ओपी बिल्कुल यह नहीं पूछ रहा है। –

+0

@ थॉमसक्लेसन: जाहिर है वे हैं। वही प्रश्न, एक ही स्वीकार्य उत्तर। –

उत्तर

55

आप माउसओवर पर एक टाइमर सेट और यह स्पष्ट करने की जरूरत है या तो जब स्लाइड सक्रिय है या mouseout पर, जो भी पहले होती है:

var timeoutId; 
$("#NewsStrip").hover(function() { 
    if (!timeoutId) { 
     timeoutId = window.setTimeout(function() { 
      timeoutId = null; // EDIT: added this line 
      $("#SeeAllEvents").slideDown('slow'); 
     }, 2000); 
    } 
}, 
function() { 
    if (timeoutId) { 
     window.clearTimeout(timeoutId); 
     timeoutId = null; 
    } 
    else { 
     $("#SeeAllEvents").slideUp('slow'); 
    } 
}); 

See it in action.

+0

@xDazz धन्यवाद जोन और एक्सडीएज़। स्लाइड नीचे खूबसूरती से काम करता है लेकिन यह माउस पर वापस स्लाइड नहीं करता है? क्या मैं कुछ गलत कर रहा हूँ या कर रहा हूँ? – user1266515

+0

दूसरे फ़ंक्शन में 'if'' else' ब्लॉक से छुटकारा पाने का प्रयास करें। आपको वास्तव में उनकी आवश्यकता नहीं है। यदि आप 'if else' को हटाते हैं तो उन तरीकों को कॉल करना कोई हानिकारक प्रभाव नहीं होगा। और शायद यह फिर से क्यों नहीं फिसल रहा है। :) –

+0

@ थॉमसक्लेसन अब ठीक है, यह सिर्फ एक बार नीचे और ऊपर स्लाइड करता है और फिर निष्क्रिय हो जाता है। अजीब – user1266515

3
var time_id; 

$("#NewsStrip").hover(
function() { 
    if (time_id) { 
     clearTimeout(time_id); 
    } 
    time_id = setTimeout(function() { 
     $("#SeeAllEvents").stop(true, true).slideDown('slow'); 
    }, 2000); 
}, function() { 
    if (time_id) { 
     clearTimeout(time_id); 
    } 
    time_id = setTimeout(function() { 
     $("#SeeAllEvents").stop(true, true).slideUp('slow'); 
    }, 2000); 
}); 
संबंधित मुद्दे