2017-06-22 33 views
0

我有一个自举switchery在我的网站:jQuery的/ JavaScript的自举Switchery clearInterval不起作用

<div class="form-group"> 
     <label class="checkbox-inline checkbox-right checkbox-switchery switchery-sm"> 
       <input type="checkbox" class="switchery" id="test55"> 
        Live 
     </label>         
</div> 
<div id="tableHolder"></div> 

我想实现这一目标:

  1. 页面加载加载外部页面上为“tableHolder “div。
  2. Switchery默认关闭。
  3. 当您点击切换台时,加载相同的外部页面,但每隔5秒重新刷新一次div。
  4. 如果您关闭了切换台,则只显示加载的外部页面,而不显示resfresh间隔。

我有麻烦,因为一切工作正常,但是当我按下switchery为关闭,在div仍保持清爽,所以clearInterval犯规的工作:(

这里是我的脚本:

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#tableHolder').load('external.php?name=myId001') 
    var documentInterval = 0; 
    $('#test55').change(function() { 

    if ($(this).prop("checked")) { 

     documentInterval = setInterval(function() { 
     $('#tableHolder').load('external.php?name=myId001') 
     }, 3000); 

    } else { 

     clearInterval(documentInterval) 
    } 
    }); 
}); 
</script> 
+1

对我来说看起来没问题。你有没有尝试在变更处理程序中设置一个断点来检查它是否进入了else分支? – nnnnnn

+0

咦......如果我使用$( '#test55')。改变(函数(){ 如果($(本).prop( “选中”)){ \t \t \t警报( “活!” ); \t }其他{ \t \t警报( “!nooot”) \t } 它不断在一次射击都警告?? – MiskoPeterka

回答

0

使用点击,不改变功能。

$(document).ready(function() { 
    $('#tableHolder').load('external.php?name=myId001'); 
    var elem = document.querySelector('#test55'); 
    var init = new Switchery(elem); 
    var documentInterval = 0; 
    var clickCheckbox = document.querySelector('#test55'); 
    $(document).on('click', '#test55', function() { 
     if ($(this).prop("checked")) { 
     documentInterval = setInterval(function() { 
      $('#tableHolder').load('external.php?name=myId001');}, 3000); 
     } else { 
      clearInterval(documentInterval); 
     } 
    }); 
}); 

Sample fiddle here,这将一些文本追加到div作为当开关打开时,当开关关闭时停止追加。如果将“点击”事件更改为“更改”事件,即使开关处于关闭状态,文本追加也会继续。

+0

这个工作!谢谢! – MiskoPeterka