2016-12-27 75 views
0
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作为参数,但没有成功。无法停止递归jQuery功能执行

有没有人知道如何实现这一目标?

+0

您正在尝试使用默认参数'function ...(z = false)',但许多浏览器都不支持此功能(您似乎没有使用其他es6功能)。你应该在你的函数之外保留一个标志变量。检查该标志并在错误时停止执行。 – sniels

+0

https://jsfiddle.net/gLba4bet/ –

+0

嗨Sniels,你能帮我在这里 –

回答

3

如果我理解正确,你不能再次调用它并传递z = -1,因为那样你会再次运行它。 你需要做的是在功能之外有一个标志,表示它不再活动。 喜欢的东西:

var isActive = true; 

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

而在你的onClick(第二个​​)设置为false。

+0

Gooodd一个... !!!!!! –

+0

嗨Kinnza,仍然无法解决。这里是简化小提琴 –

+0

https://jsfiddle.net/gLba4bet/ –