JavaScript/JQuery: $(window).resize how to fire AFTER the resize is completed? -


मैं इस तरह से jQuery का उपयोग कर रहा हूं:

  $ (window)। Resize (function () {...});  

हालांकि, ऐसा प्रतीत होता है कि अगर व्यक्ति मैन्युअल रूप से अपने ब्राउज़र विंडो को विंडो / किनारों को खींचकर बड़े और छोटा बनाने के लिए पुन: आकार देता है, तो इसके बाद के संस्करण में आग लगने वाले .resize ईवेंट बार।

प्रश्न: ब्राउज़र विंडो का आकार बदलने के बाद मैं एक फ़ंक्शन कैसे बुलाऊं? (ऐसा तब होता है जब घटना केवल एक बार आग लग जाती है)?

यह सीएमएस के समाधान का एक संशोधन है जिसे आपके कोड में कई स्थानों पर कॉल किया जा सकता है:

  var waitForFinalEvent = ( फ़ंक्शन () {var timers = {}; रिटर्न फ़ंक्शन (कॉलबैक, एमएस, अनन्य इडी) {if (! UniqueId) {uniqueId = "अनूठा आईडी बिना दो बार इसे कॉल न करें";} अगर (टाइमर [अनन्य इडी]) {clearTimeout (टाइमर [अनन्य इडी]);} टाइमर [अनन्य इडी] = सेट टाइमआउट (कॉलबैक, एमएस);};}) ();  

उपयोग:

  $ (विंडो)। Reset (function () {waitForFinalEvent (function () {alert ('resize ...'); // ...}, 500, "कुछ अद्वितीय स्ट्रिंग");});  

सीएमएस का समाधान ठीक है अगर आप इसे केवल एक बार कॉल करते हैं, लेकिन अगर आप इसे कई बार कॉल करते हैं, उदा। अगर आपके कोड के अलग-अलग हिस्सों को अलग-अलग कॉलबैक विंडो रीसाइज करने के लिए सेट किया गया है, तो यह बी / सी विफल हो जाएगा, क्योंकि वे टाइमर चर को साझा करते हैं।

इस संशोधन के साथ, आप प्रत्येक कॉलबैक के लिए एक अद्वितीय आईडी की आपूर्ति करते हैं, और उन अद्वितीय आईडी का उपयोग सभी समय-समय की घटनाओं को अलग रखने के लिए किया जाता है।


Comments