jQuery clone:cgi生成的页面

时间:2012-10-24 02:52:35

标签: jquery cgi

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进行测试时 - 它会不断更新表中的新行。不应该这样做。

对此有何解决方案?

1 个答案:

答案 0 :(得分:0)

你的更新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(假设第一次为真)。