2011-05-15 12 views
10

मैं mousewheel jquery प्लगइन के साथ एक div की सामग्री को स्क्रॉल करना चाहता हूं। मेरे पास यह है लेकिन यह काम नहीं कर रहा है। कोई विचार?jquery mousewheel

$(function() { 
$('#contentBox').bind('mousewheel', function(event, delta) { 
    if (delta > 0) { 
     $('#contentBox').css('top', parseInt($('#contentBox').css('top'))+40); 
    } else { 
     $('#contentBox').css('top', parseInt($('#contentBox').css('top'))-40); 
    } 
    return false; 
}); 
}); 
+0

रियल जवाब: http://stackoverflow.com/questions/8886281/event-wheeldelta-returns-undefined?lq=1 –

उत्तर

7

बस एक अनुमान: सीएसएस मूल्य में + 'पीएक्स' जोड़ना चीजों को ठीक करता है? दरअसल, 'मीडिया' का क्या अर्थ है?

अद्यतन

ठीक है, मैं अपने कोड का परीक्षण करने का मौका मिला है और यह सब अच्छा लग रहा है, यह मानते हुए आप सीएसएस ठीक तरह से स्थापित कर दिया है। क्या आपने वास्तव में #cont38Box पर top के लिए पहले से ही एक मान असाइन किया है? मौजूदा मान के बिना, parseInt($('#contentBox').css('top'))NaN लौटाएगा। यहाँ कोड है कि मैं का इस्तेमाल किया है:

$(function() { 
    $('#contentBox').bind('mousewheel', function(event, delta) { 

     $('#contentBox').css('top', parseInt($('#contentBox').css('top')) + (delta > 0 ? 40 : -40)); 

     return false; 
    }); 
}); 

#contentBox { height: 4em; background-color: #eee; border: 1px solid #ccc; position: absolute; top: 100px; width: 200px; } 

<div id="contentBox"></div> 

ध्यान दें कि मैं त्रिगुट ऑपरेटर का उपयोग किया है को आसान बनाने/कोड थोड़ा कम करने के लिए है, लेकिन यह सिर्फ एक सा नीचे इस उत्तर के आकार रखने के लिए है, और पूरी तरह से है वैकल्पिक। मैंने यह देखने के लिए कुछ परीक्षण सीएसएस भी इस्तेमाल किया है कि मैं क्या कर रहा हूं; मुझे यकीन है कि तुम्हारा अलग है!

+0

खेद ऊपर संपादित करें देखें। मैं #contentBox को एक बिंदु पर मीडिया के रूप में बुला रहा था लेकिन उसने – user520300

+0

काम नहीं किया था, + 'पीएक्स' ने – user520300

+0

काम नहीं किया था, मुझे पता है कि यह स्पष्ट है, लेकिन डेल्टा और आपके .css का एक console.log()। ('top', ...) कॉल आपको बताएगा कि समस्या कहां है। –

3

आप jQuery 1.6 का उपयोग कर रहे हैं, तो आप लिख सकते हैं:

$('#contentBox').css('top','+=40'); 

और इसके बारे में भूल जाते हैं।

जाहिर है, आपको अभी भी #contentBox को पूर्ण स्थिति और बाकी सभी में घोषित करने के लिए सीएसएस की आवश्यकता है।

15
$('#contentBox').bind('mousewheel DOMMouseScroll', function(event) { 
    event.preventDefault(); 
    var delta = event.wheelDelta || -event.detail; 
    $(this).css({'top': $(this).position().top + (delta > 0 ? '+=40' : '-=40')}); 
}); 

http://www.adomas.org/javascript-mouse-wheel/

+3

मेरे ब्राउज़र में क्यों उबंटू पर फ़ायरफ़ॉक्स और क्रोम दोनों इसे काम करने के लिए इसका उपयोग करने की आवश्यकता है :('var delta = e.wheelDelta || -e.detail || e.originalEvent.wheelDelta || -e। originalEvent.detail' – Kannika

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