2013-02-27 134 views
5

जो मैं करने की कोशिश कर रहा हूं वह एक बार चलने के बाद एक विशिष्ट फ़ंक्शन को अनबाइंड करना है। नीचे दिए गए कोड में यह विंडो स्क्रॉल है।एक विशिष्ट फ़ंक्शन को अनइंड करें jQuery

$(window).scroll(function(){ 
    if($(window).scrollTop() == viewportheight){ 
      $("#landing_page").fadeOut(function() { $(window).scrollTop(0); $(window).unbind("scroll");}); 
    } 
}); 

मूल रूप से, जब #div फ़ेड आउट, मैं इसे scrollTop करना चाहते हैं (0)। शीर्ष स्क्रॉल करने के बाद, मुझे इस पूरे फ़ंक्शन को अनबाइंड करने की आवश्यकता है।

क्या इस फ़ंक्शन को एक विशिष्ट नाम देने का कोई तरीका है, और फिर उस नाम को वापस कॉल करें? चूंकि यह कोड काम करता है, केवल यह सभी स्क्रॉल फ़ंक्शंस को हटा देता है। (जो बिल्कुल मैं नहीं चाहता कि चाहते हैं) मैं तो जैसे कुछ सोच रहा था:

$(window).scroll(function(FUNCTION NAME HERE){ 
    if($(window).scrollTop() == viewportheight){ 
      $("#landing_page").fadeOut(function() { $(window).scrollTop(0); $(window).unbind("FUNCTION NAME HERE");}); 
    } 
}); 

उत्तर

23

जेफरसन, की तरह कुछ के लिए किसी विशेष घटना निकल करने के लिए jquery.unbind उपयोग कर सकते हैं समारोह .. ।

$(window).bind("scroll.myScroll", function(){ 
    // stuff 
    }) 

अब, स्क्रॉल निकल - मैं उसे एक अद्वितीय पहचानकर्ता सिर्फ मामले में आप अन्य विंडो स्क्रॉल ईवेंट राशि है, तो आप के साथ गड़बड़ करने के लिए नहीं करना चाहती।

$(window).unbind('.myScroll'); 
+0

यह तय है! महोदय आपका बहुत बहुत धन्यवाद। – Jefferson

+0

कमाल! मैं खुशी से मदद कर सकता है। –

+0

इस तरह बनाए गए फ़ंक्शन को अनबिंड करने की कोई क्षमता है: 'jQuery.fn.scrollVal = function (कूदें, प्रकार) {...}'? इस तरह sth बनना काम नहीं करता है: '$ ('# रिलीजवर्सन')। Unbind ('scrollVal');' – krypru

0

आप तत्व

+0

मैंने scrollTop को अनबाइंड करने का प्रयास किया है, जो काम नहीं करता है। यह समारोह को फायरिंग रखता है। – Jefferson