1

ページに2つのDivが配置されたページがあります。最初のDivは正常に機能し、プレーヤーのリストをロードします。これで、そのDiv内のリンクをクリックすると、そのプレーヤーに関する情報を含む2番目のDivがロードされます。これも問題なく機能しますが、私がやりたいのは、クリックイベントによってロードされた後、2番目の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にイベントハンドラーの内部を移動してみてください。また、最初の間隔が完了する前にが定義されていることを確認してください。clickloc

また、ではなく、setIntervalを参照しているため、内にタイプミスがある可能性があります。どちらかが間違っている可能性があります。$('#results')$('#result')

最後にsetInterval、変数にaを割り当てて、必要に応じて後でクリアできるようにすることをお勧めしますclearInterval。また、ユーザーがクリックするたびにではなく、1回だけ間隔を設定することもできます

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

コンテンツをロードするアン​​カーのクリックイベントでlocにURLを割り当てていますaが、ロード時に実行されるsetIntervalの他のケースでは、locにURLがありません。したがって、URLを割り当てて、宣言する時刻を特定するか、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 に答える