2012-03-31 13 views
31

संभव डुप्लिकेट ऊपर स्क्रॉल:
Differentiate between scroll up/down in jquery?नीचे उपयोगकर्ता स्क्रॉल का पता लगाने या jQuery में

यह पता लगा है, तो उपयोगकर्ता स्क्रॉल ऊपर या नीचे स्क्रॉल करने के लिए संभव है?

उदाहरण:

$(window).scroll(function(){ 

    // IF USER SCROLL DOWN 
      DO ACTION 

    // IF USER SCROLL UP 
      DO ANOTHER ACTION 

}); 

धन्यवाद

उत्तर

46

स्क्रॉल ऊपर/नीचे jQuery में के बीच अंतर करने के लिए, आप इस्तेमाल कर सकते हैं:

var mousewheelevt = (/Firefox/i.test(navigator.userAgent)) ? "DOMMouseScroll" : "mousewheel" //FF doesn't recognize mousewheel as of FF3.x 
$('#yourDiv').bind(mousewheelevt, function(e){ 

    var evt = window.event || e //equalize event object  
    evt = evt.originalEvent ? evt.originalEvent : evt; //convert to originalEvent if possible    
    var delta = evt.detail ? evt.detail*(-40) : evt.wheelDelta //check for detail first, because it is used by Opera and FF 

    if(delta > 0) { 
     //scroll up 
    } 
    else{ 
     //scroll down 
    } 
}); 

इस विधि भी divs कि overflow:hidden में काम करता है।

मैंने फ़ायरफ़ॉक्स, आईई और क्रोम में सफलतापूर्वक इसका परीक्षण किया।

+0

यह बहुत अच्छा काम करता है! एक सरल '' 'e.preventDefault()' '' आपकी स्क्रॉल को किसी भी मूल तत्व (पृष्ठ की तरह) पर जाने की अनुमति नहीं देगा यदि आप केवल किसी अनुभाग की स्क्रॉल पर कुछ करना चाहते हैं और वास्तव में अपने स्क्रॉल नहीं करते हैं तत्व या उसके माता-पिता –

+0

सेब ट्रैकपैड या जादू माउस पर इसके लिए कोई विचार छिपा हुआ है? http://stackoverflow.com/q/32512924/770127 – ryanve

+1

यह अब और नहीं किया जाना चाहिए, ब्राउज़र स्नीफिंग थोड़ी देर के लिए बहुत अच्छा अभ्यास नहीं रहा है। अब एक और क्रॉस ब्राउज़र कार्यक्रम है जो उपयोग करने के लिए बेहतर होगा। http://stackoverflow.com/a/33334461/3168107 – Shikkediel

संबंधित मुद्दे