jQuery的克隆功能适用于jsfiddle,但不适用于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);
在小提琴中它只克隆一次并用新条目更新该部分,在CGI页面上它看起来像是在不断克隆。
当我通过将克隆输出到div进行测试时 - 它会不断更新表中的新行。不应该这样做。
对此有何解决方案?
答案 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(假设第一次为真)。