无法阻止递归jQuery函数执行

时间:2016-12-27 08:27:22

标签: jquery

function plotmarker(z=false) {
    console.log(z);
    if(z >= assets.length || z==-1) {
        return false;
    }
    if(z!=-1) {
        //console.log(z +'  ===  '+ assets.length);
        var myLatLng = {lat: parseFloat(assets[z].lati), lng: parseFloat(assets[z].longi)}; 
        jQuery('#impforpause').attr('data-z', z);
        jQuery('#impforpause').attr('data-latlng', myLatLng);

        var result = [parseFloat(assets[z].lati), parseFloat(assets[z].longi)];
        transition(result);
        z++;
        steps++;
        if(steps == 8) {
            console.log(result);
            map.panTo(myLatLng);
            //map.setZoom(13);
            steps = 0;

            var thisasset = assets[z];
            var marker = new google.maps.Marker({
                position: myLatLng,
                map: map,
                draggable: false,
                icon : "<?php echo base_url(); ?>assets/newicon/circle_orange.png",
            });

            (function (marker, thisasset){
                google.maps.event.addListener(marker, "click", function (e){
                    infoWindow.setContent(popup(thisasset));
                    infoWindow.open(map, marker);
                });
            })(marker, thisasset); 
        }

        setTimeout(function(){ plotmarker(z) }, 500);
    }
}

这是我的jQuery函数,一旦通过单击启动,我就会从执行本身内部调用该函数。我无法做的是,我想通过再次点击停止执行此功能。我尝试将z==-1作为参数传递,但没有成功。

有人知道如何实现这个目标吗?

1 个答案:

答案 0 :(得分:3)

如果我理解正确,你不能再次调用它并传递z = -1,因为那样你实际上会再次运行它。 你需要做的是在函数外面有一个标志,它会说它不再活动了。 类似的东西:

var isActive = true;

function plotmarker(z=false){
  if (!isActive) return;
....
}

在你的onClick(第二个​​)中将其设置为false。

相关问题