2013-04-21 6 views
8

मैं jquery स्क्रॉल घटनाओं के बारे में एक विशिष्ट प्रश्न पूछता हूं, लेकिन ऐसा लगता है कि उत्तर सामान्य रूप से jquery घटनाओं के लिए प्रभाव डाल सकता है (जिसे मुझे जानने में भी रूचि है)।एकाधिक स्क्रॉल इवेंट परिभाषा, और भेदभावपूर्ण घटना

मान लीजिए कि jQuery प्लगइन A (जैसे, jquery.scrollspy.js) $(window) करने के लिए एक पुस्तक घटना

अब कहना है कि कुछ साइट आयात प्लगइन A बांधता है, लेकिन यह भी अपने स्वयं के कस्टम जावास्क्रिप्ट फ़ाइल B, जो बांधता है एक और .scroll() घटना $(window) पर।

बाद में, जावास्क्रिप्ट फ़ाइल B अपनी स्क्रॉल ईवेंट को अनइंड करना चाहता है, और jquery प्लगइन A बरकरार रखना चाहता है। यह कैसे किया जाता है?

और ...

इस विधि सभी jQuery घटनाओं के लिए सार्वभौमिक है?

+0

jQuery के बिना ऐसा करने में रुचि रखने वालों के लिए: http://stackoverflow.com/questions/4402287/javascript-remove-event-listener –

उत्तर

8

jQuery और पर उपयोग करने के लिए सिफारिश की गई है बाँध और अनबाइंड के बजाय बंद।

function scrollEvent() 
{ 
} 
$(window).on('scroll',scrollEvent); 
$(window).off('scroll',scrollEvent); 

http://api.jquery.com/on/

0

यह आसान है। पूछ सवाल से पहले पर्याप्त शोध नहीं किया:

var fileBScrollEvent = function() { 
    // do something on scroll event 
} 


$(window).bind('scroll',fileBScrollEvent); 

... बाद में कोड में ...

$(window).unbind('scroll',fileBScrollEvent); 
+0

समाधान गलत नहीं है, लेकिन jQuery पसंद करता है कि आप चालू और बंद (1.7 के बाद से) का उपयोग करते हैं। –

5

बेस्ट jQuery के .on() और .off() पद्धतियों बल्कि .bind से() और .unbind() का उपयोग करने के लिए।

jQuery 1.7 के रूप में, .on() विधि किसी दस्तावेज़ में ईवेंट हैंडलर को जोड़ने के लिए पसंदीदा तरीका है।

आप ईवेंट नाम पर एक कस्टम प्रत्यय जोड़कर ईवेंट को नाम भी दे सकते हैं। तब आप उस विशेष घटना बाद में (उदाहरण के लिए निकल करने के लिए) का उपयोग कर सकते हैं ...

$(window).on('scroll.myscroll', function() { 
    // do something on scroll event 
}); 

एक मांद ...

$(window).off('scroll.myscroll'); // unbind my namespaced scroll event 

देखें https://css-tricks.com/namespaced-events-jquery/

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