jQuery TimeCircles事件侦听器范围

时间:2014-01-10 06:34:08

标签: javascript jquery timer scope addeventlistener

我正在测试来自here的jquery计时器“TimeCircles”,我已经能够为 30分钟生成一分钟/秒计时器 25分钟处发出警告警告,我正在尝试在 20分钟处添加一个阈值事件,这将改变圆圈的颜色。

我不完全确定如何在实例化后访问TimeCircles()属性。我们这样实例化:

$('#idle_timer').attr('data-timer',1800);
$('#idle_timer').TimeCircles({ time: { 
    Days: { show:false }, 
    Hours: { show:false }, 
    Minutes: { color: '#4D8DC1' }, 
    Seconds: { color: '#4D8DC1' } } })
  .addListener(
    function(unit,value,total) { 
        if (total == 1200) {  

            // CHANGE COLOUR OF TimeCircles HERE

        } else if (total == 1500) { 
            alert('Your session will expire in 5 minutes, you should save your work and / or reload the page.'); 
        } 
    } 
  );

"total == 1200"的测试中,如何访问分钟/秒颜色属性,以便两者都可以更改为红色? $(this)似乎无法使用?

2 个答案:

答案 0 :(得分:3)

我能够找到原始开发人员的解决方案。部分问题是动态设置的.data()属性在他的代码中没有被考虑,已经更新了。从那里很简单,只需添加一个监听器,然后在其中测试total值,然后实例化一个覆盖原始实例的新实例......

$( document ).ready(function() {
var idle_timer = $('div#idle_timer',window.parent.document);
idle_timer.data('timer',15);
idle_timer.TimeCircles({ time: { Days: { show:false }, Hours: { show:false }, Minutes: { color: '#4D8DC1' }, Seconds: { color: '#4D8DC1' } } })
.addListener(
    function(unit,value,total) { 
        if (total == 10) { 
            idle_timer.data('timer',10);
            idle_timer.TimeCircles({ time: { Days: { show:false }, Hours: { show:false }, Minutes: { color: '#900' }, Seconds: { color: '#900' } } })
        } else if (total == 5) { 
            alert('Your session will expire in 5 seconds, you should save your work and / or reload the page.');
        } 
    } 
);
});

答案 1 :(得分:0)

不知道这是否理想,但有效:

$('#idle_timer').data('TimeCircles_config', { time: { 
    Days: { show:false }, 
    Hours: { show:false }, 
    Minutes: { color: '#4D8DC1' }, 
    Seconds: { color: '#4D8DC1' } } }
);

$('#idle_timer').TimeCircles($('#idle_timer').data('TimeCircles_config'))
  .addListener(
    function(unit,value,total) { 
        if (total == 1200) {  
            var config = $(this).data('TimeCircles_config'); //If thid doesn't work, use $('#idle_timer').data(...)
            var minColor = config.Minutes.color;

            // CHANGE COLOUR OF TimeCircles HERE

        } else if (total == 1500) { 
            alert('Your session will expire in 5 minutes, you should save your work and / or reload the page.'); 
        } 
    } 
  );

希望这会有所帮助。干杯