javascript - 限制 jQuery slider 触发更改事件的次数?

标签 javascript jquery python jquery-mobile flask

我遇到的问题是 jQuery 移动 slider 触发过于频繁,无法在服务器上正确处理。我有这样的东西:

$("#testSlider").change(function( event, ui ) {
        $.getJSON($SCRIPT_ROOT + '/_update_sliders', {
        c: $('#testSlider').val()
  }, function(data) {
    g4.updateOptions( { 'file': data.result } );


      });

这工作得很好,/_update_sliders 在 python 中启动一个函数,它将 data.result 发送回站点。如果我将 slider 更改得太快,则会出现问题 - 发送的请求太多,当我停止 slider 时,它需要相当长的时间才能 catch ,甚至会混淆请求 - 因此最终状态甚至可能不会显示实际的 slider 值.

什么是干净的解决方案?无论如何要限制更改事件触发的次数?

谢谢你和亲切的问候

拉克兹

最佳答案

您可以使用以下概念对其进行限制。使用 setTimeout() 来添加延迟,如果更改不断发生,延迟将被推迟,并且在整个延迟期结束之前不会触发

var sliderTimer,
    sliderAjaxDelay = 100;

$("#testSlider").change(function (event, ui) {
    if (sliderTimer) {
        clearTimout(sliderTimer); /* if already a timeout, clear it */
    }

    // throttle requests using setTimeout 
    sliderTimer = setTimeout(sliderAjaxUpdate, sliderAjaxDelay);
});   


function sliderAjaxUpdate() {
    $.getJSON($SCRIPT_ROOT + '/_update_sliders', {
        c: $('#testSlider').val()
    }, function (data) {
        g4.updateOptions({
            'file': data.result
        });
    });
}

将延迟变量调整为适合您的值

关于javascript - 限制 jQuery slider 触发更改事件的次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30174278/

相关文章:

javascript - 使用 dc.js 进行简单列表过滤器和搜索过滤器?

javascript - 将单独的 js 文件与多个 jquery (document).ready() 事件统一的正确方法

python - Keras:从 HDF5 和 CSV 加载小批量

python - 从 Python 中的字符串中提取字段和值

javascript - 检查是否加载了 jQuery UI

javascript - Material-ui 不会根据主题改变 Typography 颜色

javascript - 带有追加方法问题的选择选项的 jQuery 切换 div

python - Windows机器目录更改时如何在ubuntu上获得通知?

javascript - JavaScript 是一个开源项目吗?

javascript - 功能启用后如何停用