我这里弄了个类似选项卡效果的东西,从后台获取数据相对应显示,由于要不断获取最新数据所以用了个定时器每1秒去更新上次,但是这个定时器是公共的,点击完后会有问题,当你离开这个页面到回来的时候定时器会发生打架,我该怎么处理???
$(function() { function Push(ss) { $.ajax({ type : "get", url : "http://127.0.0.1:8080/html/tables.txt", dataType : "json", success : function(json) { for (var i = 0; i < json.data.length; i++) { if ($(ss).attr("name") == json.data[i].name) {//看传过来的后台数据是否等下面点击的属于name,然后进行处理 } } }, error : function() { alert('fail'); } }); }; var num = $("#lobby_nav a:first");//默认让第一个显示//var obj=new Object(); //obj.timer= var timer = setInterval(function() {//这里每隔一秒自动获取后台最新数据 Push(num); }, 1000); $("#lobby_nav a").on("click",function() { //点击获取后台最新数据 num = $(this); Push($(this)); }); });
你就一个定时器,怎么打架的?感觉和定时器没关系样...
你说的打架是什么样子的?
就是第1桌和第11桌会同时存在, 因为他们俩个都是被点击过的,
他们下面各自的百家乐(和庄)会不停的切换!!!!
其实在这个页面点击的时候是没什么问题的,
因为我用的是一站式的,用html5的历史管理切换到其它地方然后倒回来就会看到这种情况!!!
我也不知道是怎么回事??
@Mi文: 看来你要使用一下单例模式了
我记得以前做过类似的东西,不过我是比较喜欢原生js。
你这个应该可以把定时器赋给一个变量,然后把变量以一个html属性的方式赋给某个标签,这样你有多少个需要操作的html标签,就有多少个定时器了,然后直接操作某个html“标签上的定时器”应该就行。
不过也过去很久了,这种方式的可行性也不知道,不过可以一试。
或者你可以声明一个数组或集合,用来存定时器,这种总可以了。
.....................................