मेरे पास कुछ व्यवहार टॉगल करने से एक चेकबॉक्स है, हालांकि अगर कोई लगातार 100 क्लिक करता है तो मैं अपने सर्वर पक्ष में 100 अनुरोध नहीं भेजना चाहता हूं।AJAX अनुरोधों को ठीक से कैसे डिबॉन्स करें
deBouncer = function($,cf,of, interval){
var debounce = function (func, threshold, execAsap) {
var timeout;
return function debounced() {
var obj = this, args = arguments;
function delayed() {
if (!execAsap)
func.apply(obj, args);
timeout = null;
}
if (timeout)
clearTimeout(timeout);
else if (execAsap)
func.apply(obj, args);
timeout = setTimeout(delayed, threshold || interval);
}
}
jQuery.fn[cf] = function(fn){ return fn ? this.bind(of, debounce(fn)) : this.trigger(cf); };
};
अपने दस्तावेज़ तैयार समारोह में:
deBouncer(jQuery,'smartoggle', 'click', 1500);
तब घटना अपने आप में:
$(window).smartoggle(function(e){
MyToggleFunction();
});
यह वही है मैं अब तक जगह में मिल गया (इस कोड स्निपेट पाया जाता है) है
यह काम करता है क्योंकि मैंने 1500 एमएस को उद्घोषणा अवधि के रूप में रखा है, इसलिए यदि आप 1500 एमएस के साथ एन बार क्लिक करते हैं तो यह केवल टी वह सर्वर के लिए नवीनतम राज्य।
हालांकि इसका उपयोग करने का दुष्प्रभाव है, अब अन्य सामग्री के लिए मेरा क्लिक ईवेंट गड़बड़ हो गया है। क्या मुझसे यहां कुछ गलत हो रहा है? क्या बहस करने का कोई बेहतर तरीका है?
आप निश्चित रूप से यहां लिखने वाले ट्रैक पर हैं .. मैं केवल इस घटना को प्रश्न में चेकमार्क पर बांध दूंगा। इससे आपको कुछ अन्य कोडिंग को सरल बना दिया जा सकता है। –
@ जेरेमी जेस्टारचर क्या आप कृपया इसका मतलब दे सकते हैं? –
मुझे आपके मार्कअप को देखने की ज़रूरत होगी ... या मैं आपको यह कैसे कर सकता हूं इस पर आधारित एक मेकअप उदाहरण दे सकता हूं। –