javascript - JQVMap - Ajax 悬停调用,标签问题

标签 javascript jquery ajax jqvmap

我正在使用 JQVMap 来显示国家/地区。

如果国家/地区悬停,它会通过 ajax 显示计数,这是正确的。

问题是当我快速悬停许多国家时,它会附加到我停下来的一个标签中,所以基本上它会“堆叠”标签。

例子:

我一次悬停了太多国家。例如,我在意大利停留,所有“学校计数”都将附加到那里。

这是我的JS代码

$(document).ready(function(){
jQuery('#vmap').vectorMap({
    map: 'world_en',
    backgroundColor: null,
    color: '#ffffff',
    hoverOpacity: 0.7,
    selectedColor: '#666666',
    enableZoom: true,
    showTooltip: true,
    values: sample_data,
    scaleColors: ['#C8EEFF', '#006491'],
    normalizeFunction: 'polynomial', 
    onLabelShow: function (event, label, code) {

        if(sample_data[code] > 0) {
            //console.log(code);
            $.getJSON('/ajax/admin/ajaxcallpage', {country_key: code}, function(data) {
                //var school_count = 0;
                school_count = data;
                label.append(': ' + school_count + ' Schools'); 

            });
        }
    }
});
});

最佳答案

这个问题是因为所有的 AJAX 请求仍然被触发,一旦它们完成,所有的结果都被添加到标签中。您可以通过在 $.getJSON 返回的 jqXHR 上调用 abort() 来取消之前的请求。试试这个:

var lastRequest; // variable to store the previous request

jQuery('#vmap').vectorMap({
    map: 'world_en',
    backgroundColor: null,
    color: '#ffffff',
    hoverOpacity: 0.7,
    selectedColor: '#666666',
    enableZoom: true,
    showTooltip: true,
    values: sample_data,
    scaleColors: ['#C8EEFF', '#006491'],
    normalizeFunction: 'polynomial', 
    onLabelShow: function (event, label, code) {
        if (sample_data[code] > 0) {
            lastRequest && lastRequest.abort(); // abort the previous request

            lastRequest = $.getJSON('/ajax/admin/ajaxcallpage', {
                country_key: code
            }, function(data) {
                school_count = data;
                label.append(': ' + school_count + ' Schools'); 
            });
        }
    }
});

关于javascript - JQVMap - Ajax 悬停调用,标签问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34419442/

相关文章:

jquery - 无法通过Ajax请求获取CSV文本

javascript - 需要为小漫画制作网格

javascript - onchange 集合出现错误而不是函数

jquery - 使用 jQuery 的悬停状态

javascript - 定位在绝对定位的 div 下方

c# - 对 WCF 服务的 POST 调用出现问题 - 400 BAD REQUEST

javascript - 使用索引访问 AJAX JSON 属性在 promise 中给出未定义

javascript - 错误 : Cannot find module 'ansi-styles' in AngularJS with Yeoman generator

javascript - Promise.all() 将所有结果返回为未定义

javascript,正则表达式解析大括号中的字符串内容