1

我有一个页面,页面上有 2 个 Div。第一个 Div 工作正常并加载玩家列表。现在,当您单击该 Div 中的链接时,它会加载第二个 Div,其中包含有关该玩家的信息。这也很好,但我想做的是让第二个 Div 在点击事件加载后定期刷新玩家数据。这是我目前的尝试,但它不起作用:

var loc = "";
$("a").live('click', function() {
    loc = "player.php?user=" + $(this).html();
    $("#result").load(loc);
});
setInterval(function() {
    $("#results").load(loc);
}, 1000);
4

2 回答 2

1

尝试移动事件处理程序setInterval内部click,使其在第一次单击之前不会触发,并确保loc在第一个间隔完成之前定义。

此外,您的 中可能有错字setInterval,因为它指的是$('#results'),而不是$('#result')。一个或另一个可能是不正确的。

最后,最好将 a 分配setInterval给变量,以便您以后可以在需要时使用clearInterval. 它还允许您只设置一次间隔,而不是每次用户点击

var loc = "";
var interval = null;

$("a").live('click', function(){
    loc = "player.php?user=" + $(this).html();

    $("#result").load(loc);

    // only create the interval once
    if(!interval) {
        interval = setInterval(function(){
            $("#result").load(loc);
        }, 1000);
    }
});
于 2012-07-11T18:29:38.443 回答
0

您在a将加载内容的锚的单击事件中将 url 分配给 loc,但在加载 loc 时执行的 setInterval 的另一种情况将没有 url。因此,将 url 分配给 loc 您声明它的时间或确保它在 setInterval 之前分配。

另请注意live,不推荐使用您应该on改用的。

var loc = "player.php?user=" + $("a").html();
$("a").live('click', function(){
        loc = "player.php?user=" + $(this).html();
        $("#result").load(loc);
    });
setInterval(function(){
    $("#results").load(loc);
}, 1000);
于 2012-07-11T18:30:15.707 回答