jQuery,是否将表元素的背景色设置为上一个元素的颜色?

jQuery,是否将表元素的背景色设置为上一个元素的颜色?,jquery,colors,background,html-table,Jquery,Colors,Background,Html Table,我想动态地将div的背景色设置为直接执行该操作的表行的背景色。以下是我想做的: $(this).next().css('background-color', $(this).css('background-color')); 当我在黑板上寻找答案时,我发现。这似乎是对他们有效的答案,但我的答案不起作用。我非常感激地接受任何建议 编辑 对于那些要求了解我正在尝试做什么的人,以下是构建我的表体的PHP代码: <?php // For every row past the first (he

我想动态地将div的背景色设置为直接执行该操作的表行的背景色。以下是我想做的:

$(this).next().css('background-color', $(this).css('background-color'));
当我在黑板上寻找答案时,我发现。这似乎是对他们有效的答案,但我的答案不起作用。我非常感激地接受任何建议

编辑

对于那些要求了解我正在尝试做什么的人,以下是构建我的表体的PHP代码:

<?php
//  For every row past the first (header) row, create a table entry
    while ( $row = fgetcsv($handle) ) {

        echo "<tr class='c_edd_row'>";                      
        //  Build each cell         
        $num = count($row);         
        for ($c=0; $c < $num; $c++) {
            //  Do not echo entries 23 through 27 (unused cells)
           if ( $c < 23 || $c > 27 ) {
              echo "<td>".$row[$c]."</td>";
              //  save the last entry for the hidden div
              $validation_notes = $row[$c];
          }
        }
        echo "</tr>";
        echo "<tr class='c_sub_row'>
        <td colspan='42' class='c_notes_div'>
        <div class='c_notes_div'>".$validation_notes."</div>
        </td></tr>";
    }
?>

表行从不直接位于
div
元素之前-这将是无效的表标记。如果要将tr的背景设置为其前面的tr的背景,可以执行以下操作:

$("tr:eq(1)").css("background-color", function(){
  return $(this).prev().css("background-color");
});
或者,您可能在
tr
中有一个
div
,并且希望
div
tr
的父级之前的
div具有相同的背景色:

$(this).css("background-color", function(){
  return $(this).closest("tr").prev().css("background-color");
});
其中,
是当前的
div
元素

这里的神奇之处在于用作
$.css
方法第二个参数的匿名函数。从它里面你可以做任何事情。例如,我们可以选择页面上的任何其他元素并复制其背景颜色:

$(this).css("background-color", function(){
  return $(".someOtherDiv").css("background-color");
});
同样,假设
这个
是我们的目标
div
元素,它现在将具有与
相同的背景色

更新 从注释中,听起来您有两个表行(至少)。一个可见,下一个隐藏。在第二个表行中,您有一个div。单击第一个(可见)表行时,您希望同时显示第二个表行,并将第一个TR的bg应用于第二个(现在可见)表行中的div:

$("tr:visible").on("click", function(event){
  var bg = $(this).css("background-color");
  $(this).next().show().find("div").css("background-color", bg);
});

表行从不直接位于
div
元素之前-这将是无效的表标记。如果要将tr的背景设置为其前面的tr的背景,可以执行以下操作:

$("tr:eq(1)").css("background-color", function(){
  return $(this).prev().css("background-color");
});
或者,您可能在
tr
中有一个
div
,并且希望
div
tr
的父级之前的
div具有相同的背景色:

$(this).css("background-color", function(){
  return $(this).closest("tr").prev().css("background-color");
});
其中,
是当前的
div
元素

这里的神奇之处在于用作
$.css
方法第二个参数的匿名函数。从它里面你可以做任何事情。例如,我们可以选择页面上的任何其他元素并复制其背景颜色:

$(this).css("background-color", function(){
  return $(".someOtherDiv").css("background-color");
});
同样,假设
这个
是我们的目标
div
元素,它现在将具有与
相同的背景色

更新 从注释中,听起来您有两个表行(至少)。一个可见,下一个隐藏。在第二个表行中,您有一个div。单击第一个(可见)表行时,您希望同时显示第二个表行,并将第一个TR的bg应用于第二个(现在可见)表行中的div:

$("tr:visible").on("click", function(event){
  var bg = $(this).css("background-color");
  $(this).next().show().find("div").css("background-color", bg);
});
这里
。您的_table_class
是所有下一个div要着色的表中使用的类/伪类。记住div应该是表的下一个元素

另外,如果您的表包含
标记,则行将是
$(this).parent().parent().next().css($背景色',$(this).css($背景色')

这里
。您的_table_class
是所有下一个div要着色的表中使用的类/伪类。记住div应该是表的下一个元素

另外,如果您的表包含
标记,则行将是
$(this).parent().parent().next().css($背景色',$(this).css($背景色')


你能提供一个简单的HTML结构来描述你想要的吗?您的描述不太清楚。通常div元素不应该位于元素旁边,这就是为什么它不适合您,因为它在当前元素之后读取元素的backgroundcolor属性。正如Lior所说,我们需要查看html来优化代码,您的元素是子元素(与表相同)还是表的父元素?谢谢您的评论。希望我发布的编辑将向您展示我的表是如何构建的。您能提供一个简单的HTML结构来描述您想要的吗?您的描述不太清楚。通常div元素不应该位于元素旁边,这就是为什么它不适合您,因为它在当前元素之后读取元素的backgroundcolor属性。正如Lior所说,我们需要查看html来优化代码,您的元素是子元素(与表相同)还是表的父元素?谢谢您的评论。希望我发布的编辑将向您展示我的表是如何构建的。您的#2解决方案完美地描述了我正在尝试做的事情,但代码不太有效-它实际上将单击的行设置为以下div,与我想要的相反。我会继续啃你的代码,但如有任何进一步的建议,将不胜感激。谢谢您的时间。因此您有两个
div
元素,立即并排(
foobar
)。当你点击第二行时,你想让它得到第一行的背景吗?不,我有一个表行,每个可见行后面都有display:none,隐藏行包含一个div。div只是我想显示的一些内容的一个方便容器。当我单击一个可见的行时,它下面的行变为可见,而div也随之变为可见。正是这一隐藏(现在可见)行及其所包含的div,我想采用其上方单击行的背景颜色。@Stanton请查看我的更新,并纠正我可能存在的任何误解。伙计,我想你已经锁定了它。我做了一些细微的改变(主要是为了适应我正在做的其他事情),我让它工作得非常完美。如果你想看的话,我已经更新了我原来的帖子