jquery if语句检测是否有带“的tr”;X";下等

jquery if语句检测是否有带“的tr”;X";下等,jquery,Jquery,我试图将css规则应用于tr元素,这取决于下面的tr是什么类 前 但仍将其应用于行 再次感谢大家。我的最新答案是受启发的,但他最终走了一条不同的路,因此在这里发布: $('tr.x:has(+ tr.y)').css({ ... }); 使用带有:has测试的。(我不确定:has是否是一个特定的东西[Sizzle是jQuery和其他人使用的选择引擎],或者是否有一个提议;CSS3没有指定它,因此还不是标准的东西……) 实例: 更新如果要对该行的第一个子单元格应用样式,请查找选择器: $('tr

我试图将css规则应用于tr元素,这取决于下面的tr是什么类

但仍将其应用于行


再次感谢大家。

我的最新答案是受启发的,但他最终走了一条不同的路,因此在这里发布:

$('tr.x:has(+ tr.y)').css({ ... });
使用带有
:has
测试的。(我不确定
:has
是否是一个特定的东西[Sizzle是jQuery和其他人使用的选择引擎],或者是否有一个提议;CSS3没有指定它,因此还不是标准的东西……)

实例:

更新如果要对该行的第一个子单元格应用样式,请查找选择器:

$('tr.x:has(+ tr.y) td:first-child').css({ ... });
实例:

或者,如果要对行执行某些操作,然后还要对单元格执行某些操作,请将其拆分:

var rows = $('tr.x:has(+ tr.y)');
rows.css({color: 'blue'});
rows.find('td:first-child').css({color: 'red'});
实例:


原始(缓慢)回答:

现场示例:

尝试以下方法:

$('.x + .y').prev().css({'background-color' : 'yellow', 'font-weight' : 'bolder'});

您应该将其分为两部分:jQuery和CSS。使用CSS设置所有.x元素的样式,并使用jQuery进行特殊的格式设置

$(".y").prev(".x").children("td").first().css({'background-color':'yellow', 'font-weight':'bolder'});
演示:

编辑:实际上,您应该只向“特殊的”.x元素添加一个类,并在CSS中执行所有样式设置。我还调整了代码,以解决第一个孩子的td

$(".y").prev(".x").children("td").first().addClass('x-special');

...
<style>
.x-special {
  background-color: yellow;
  font-weight: bolder;
}
</style>
$(.y”).prev(.x”).children(.td”).first().addClass('x-special');
...
.x-special{
背景颜色:黄色;
字体大小:粗体;
}

这将设置.y元素的样式,而不是.x元素的样式。@Sarfraz:我冒昧地为您更新了它。@Sarfaz:啊,重叠的编辑,您用一个不同但也有效的方法删除了我的,例如。@T.J.Crowder:是的,我正在编辑,不知道您已经编辑过:)@Sarfraz:我在我的回答中发布了我的备选方案。这两个都很好,再次为
+
赢得赞誉。我想将css样式应用于tr的第一个td,我正在尝试$(this.first('td').css({'color':'Blue',});但仍将其应用于row@Cesar:您正在寻找
td:first child
,我已经更新了答案。@T.J.Crowder:谢谢您的回复,我想我没有很好地解释自己,我需要对通过条件的每个tr的第一个td应用样式。再次感谢。@Cesar:不用担心,这很清楚。这就是我的更新所做的。看看这些活生生的例子。@Cesar:不用担心。如果你还没有给萨弗雷兹投赞成票,我会——他的答案也达到了目标(比我原来的答案要准确得多,但从那以后我改进了很多)。感谢你的回答,目前它只适用于第一行的第一个td,我需要它来为所有行的第一个td投票。孩子们,注意使用(“td:first child”)而不是children(“td”)。first()应该做到这一点:)
$(document).ready(function() {

    $('tr.x').each(function() {
        var $this = $(this);
        var next = $this.next('tr');
        if (next.length > 0 && next.hasClass('y')) {
            // This tr is class x followed by class y
        }
    });

});
$('.x + .y').prev().css({'background-color' : 'yellow', 'font-weight' : 'bolder'});
$(".y").prev(".x").children("td").first().css({'background-color':'yellow', 'font-weight':'bolder'});
$(".y").prev(".x").children("td").first().addClass('x-special');

...
<style>
.x-special {
  background-color: yellow;
  font-weight: bolder;
}
</style>