如何重用Jquery .each ....作为一个单独的方法来传递各种元素

时间:2014-07-10 20:39:02

标签: jquery

我还在用jQuery弄湿我的脚。

我有一个表,我每隔几秒就通过Ajax刷新一次。我正在使用这一段特殊代码使其在刷新表内容后仅突出显示新行(并淡化它们):

$("#log_table tr.new_row").each(function (){
   var oldBGcolor = $(this).css("background-color");
   $(this).animate({backgroundColor: "#FFFF33"}, "fast").delay(3000).animate({backgroundColor: oldBGcolor}, 3000).removeClass("new_row");
});

我想把这个.each变成一个单独的函数,这样我就可以把它放在另一个表上。而且我预计也许可以在第三张桌子上重复使用它(所有这些都在同一页上,请注意)。

如何更改此代码然后"传递"我的桌子呢?我确信这很容易,我只是想不出这对Google的写字。

谢谢!

- = Dave = -

3 个答案:

答案 0 :(得分:1)

我假设每个表都有一个唯一的ID ...所以在下面的示例中,您有log_table,另一个名为log_table2的表,以及第三个名为log_table3的表。

animateTable("log_table");
animateTable("log_table2");
animateTable("log_table3");

function animateTable(tableName){
    $("#" + tableName +" tr.new_row").each(function (){
       var oldBGcolor = $(this).css("background-color");
       $(this).animate({backgroundColor: "#FFFF33"}, "fast").delay(3000).animate({backgroundColor: oldBGcolor}, 3000).removeClass("new_row");
    });
}

或者添加一个类属性(在此示例中称为' animate-table-class'到每个表并使用此调用一次:

$(".animate-table-class tr.new_row").each(function (){
   var oldBGcolor = $(this).css("background-color");
   $(this).animate({backgroundColor: "#FFFF33"}, "fast").delay(3000).animate({backgroundColor: oldBGcolor}, 3000).removeClass("new_row");
});

答案 1 :(得分:1)

更简单的方法是为每个表提供相同的类,例如“table-class”,然后执行

$("#log_table.table-class tr.new_row").each(function (){
   var oldBGcolor = $(this).css("background-color");
   $(this).animate({backgroundColor: "#FFFF33"}, "fast")
          .delay(3000)
          .animate({backgroundColor: oldBGcolor}, 3000)
          .removeClass("new_row");
});

答案 2 :(得分:0)

只需将表ID作为参数传递

function highlightNewRows(tableId){
    $("#" + tableId + " tr.new_row").each(function (){
        var oldBGcolor = $(this).css("background-color");
        $(this).animate({backgroundColor: "#FFFF33"},"fast")
                .delay(3000)
                .animate({backgroundColor: oldBGcolor}, 3000)
                .removeClass("new_row");
    });
}