0

jQuery のクローン機能は jsfiddle では機能しますが、CGI で生成されたページでは機能しません。

http://jsfiddle.net/FkrBc/1/

関連コード:

var displayDiff = $("#firstTable tbody").clone();

function checkee () {
    $( "tr", displayDiff ).each( function() {
        var foo = $(this).find("td:first-child").text();
        $("#firstTable tbody tr td:first-child").filter(function() {
        return $(this).text() == foo;
        }).parent().attr("class","same");

    });
    var content = $('#firstTable tbody>tr[class!="same"]').clone();
    $("#results").html(content);
}
rowCount = $("tr", displayDiff).length;

setInterval(function(){ 
  if($("#firstTable tr").length > rowCount){
     checkee();
  } 
}, 2000);

フィドルでは、一度だけクローンを作成し、セクションを新しいエントリで更新します。CGI ページでは、常にクローンを作成しているように見えます。

クローンをdivに出力してテストすると、テーブルへの新しい行が常に更新されます。これをすべきではありません。

これに対する解決策はありますか?

4

1 に答える 1

0

update rowCount を checkee() 関数の中に入れるべきではありませんか? そのようです:

var rowCount = 0; //declare outside of function to maintain scope
function checkee () {
    $( "tr", displayDiff ).each( function() {
        var foo = $(this).find("td:first-child").text();
        $("#firstTable tbody tr td:first-child").filter(function() {
        return $(this).text() == foo;
        }).parent().attr("class","same");

    });
    var content = $('#firstTable tbody>tr[class!="same"]').clone();
    $("#results").html(content);
    rowCount = $("tr", displayDiff).length;  //this line moved to inside this function
}

現在、rowCount はスタンドアロン ライン上にあるため、一度しか設定されていません。

$("#firstTable tr").length > rowCount)

内部 setInterval の関数は常に true です (最初は true であると仮定します)。

于 2012-10-24T03:46:01.827 に答える