【问题标题】:Applying first and last child to a certain <tr> id via css and jquery通过css和jquery将第一个和最后一个孩子应用于某个<tr> id
【发布时间】:2017-09-16 22:39:16
【问题描述】:

基本上,我希望能够删除 'non' 第一个和最后一个子副本下方和上方的 margins。所以我试图定位row,它有重复的id's.. 在这种情况下#Day2#Day6,然后我尝试选择:first-child:last-child

tr#Day2:first-child td, tr#Day6:first-child td { margin-top: 0px !important; }
tr#Day2:last-child td, tr#Day6:last-child td { margin-bottom: 0px !important; } 

我不确定 css 唯一的方法是否能够实现我想要的,或者我目前正在做的事情是否正确。

我尝试使用jquery 来做到这一点是:

<script>
    $(document).ready(function () {
        $(document).ajaxComplete(function () {
            var seen = {};
            $('table tr td').each(function() {
                var txt = $(this).text();
                if (seen[txt])
                    $(this).css("margin-bottom", "0px");
                else
                   seen[txt] = true;
            });
        });
   });
</script>

虽然这似乎并没有删除重复的边距,我的 css 尝试也没有,但我确信有办法。也许我不能将:first-child:last-childtr id 一起使用?如果是这样,还有其他方法可以实现我想要的吗?

非常感谢任何帮助,谢谢。

JSFiddle 请查看我的example here

**

解决方案

** 所有这些都无需 jQuery 即可实现。请在此处找到工作版本。 感谢@Marcin 为我指出解决方案。

JSFiddle: View Solution

【问题讨论】:

    标签: javascript jquery html css css-selectors


    【解决方案1】:

    只有解决方法:

    .Day2 { margin: 0px 0px 5px 0px; }
    .Day2 ~ .Day2 td { margin-top: 5px; }
    

    这仅设置每个.Day2 的下边距,然后,如果之前有任何.Day2,则将margin-top 设置为5px;

    取自CSS3 selector :first-of-type with class name?

    您不应在多个元素上使用相同的id。请改用class(例如class="day1")。

    【讨论】:

    • 感谢@Marcin 的回复,但是我必须整天都使用相同的 CSS,如果我添加到 .Day5.Day3,就会在这里看到它搞砸了:JSFiddle 在这种情况下.Day2 ~ .Day2 不起作用?
    • 我认为.Day2 ~ .Day2 td 是您所需要的。
    • 感谢@Marcin,您让我走上了正轨。我只需要将.Day2 td { margin: 10px 0px 0px 0px } 也添加到第一个。
    猜你喜欢
    • 2013-03-12
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 2012-02-09
    • 2014-08-19
    • 2011-12-08
    • 1970-01-01
    相关资源
    最近更新 更多