jQuery克隆:cgi生成的页面

jQuery克隆:cgi生成的页面,jquery,cgi,Jquery,Cgi,jQuery的克隆特性可以在JSFIDLE中工作,但不能在CGI生成的页面上工作 相关代码: var displayDiff = $("#firstTable tbody").clone(); function checkee () { $( "tr", displayDiff ).each( function() { var foo = $(this).find("td:first-child").text(); $("#firstTable tbo

jQuery的克隆特性可以在JSFIDLE中工作,但不能在CGI生成的页面上工作

相关代码:

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);
在fiddle中,它只克隆一次,并用新条目更新部分,在CGI页面上,它看起来像是在不断克隆

当我通过将克隆输出到div进行测试时,它会不断更新表中的新行。我不应该这样做


有什么解决方案吗?

更新行数不应该在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)

inside setInterval的函数始终为true(假设第一次为true)。

行计数不应更改,因此我将其保留在函数外部
rowCount
表示表中的原始行数。我想测试添加的其他行。啊,我明白你的意思。是否有理由必须使用setInterval来搜索差异?让ClickMe按钮添加到表和results div不是更容易吗?我希望我可以——提交表单负责添加行。这是一个服务器端CGI脚本。我在这个页面上的唯一功能是javascript/jQuery。您是否将所有javascript包装在document.ready事件中<代码>$(document).ready(函数(){//yourscript here})我认为当前版本的jQuery没有必要这样做。脚本的其余部分可以工作,但克隆部分只是保持克隆。当我计算“克隆”的行数时,它们会随着原始行数的增加而增加。想知道是否有可能使用html5本地存储来实现这一点。