【问题标题】:Adding a </br> every second list item? [closed]每隔一个列表项添加一个</br>? [关闭]
【发布时间】:2014-01-24 15:44:41
【问题描述】:

我有一个列表,我需要为每两个元素休息一下:

原文:

<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>

需要:

<ul>
<li></li>
<li></li>
</br>
<li></li>
<li></li>
</ul>

小提琴:http://jsfiddle.net/9uksT/

Jquery 可以做到这一点吗?

编辑:哦,抱歉这个问题。我也愿意使用 CSS。我只需要在每 2 对列表项之间留一个空格

【问题讨论】:

  • 那是无效的HTML...&lt;br&gt;标签不是结束标签,&lt;ul&gt;只能包含&lt;li&gt;,不能包含&lt;br&gt;
  • 你的标题说每隔一个项目,但你的描述说每两个元素,这些是不同的东西。请澄清。顺便说一句,不是我的反对
  • 是的,可以使用 jquery。但不能保证浏览器会用它做什么。
  • 坏主意,因为
      唯一有效的孩子是
  • 你最好给第二个列表项一个底部边距的类。

标签: javascript jquery css


【解决方案1】:

不要以这种方式滥用&lt;br&gt; 标签。使用 CSS 为每个第二个元素提供更宽的下边距:

.root ul li:nth-child(2n) {
    margin-bottom: 1em;
}

http://jsfiddle.net/mblase75/9uksT/3/

也就是说,我会将您的 &lt;ul&gt; 子列表替换为定义列表,在这种情况下这在语义上更正确:

.root dl {
    margin: 0 0 0 2em;
}
.root dl dd {
    margin-bottom: 1em;
}

http://jsfiddle.net/mblase75/E7gAA/

【讨论】:

【解决方案2】:

您可以使用类和 jQuery 将类分配给正确的元素

.menu-vertical li.even{
    margin-bottom: 10px;
}

然后

$('.menu-vertical > ul li:nth-child(2n)').addClass('even')

演示:Fiddle

注意:正如我在 cmets 中显示的,它可以使用 nth-child selector 完成,但 IE < 9 不支持

【讨论】:

    【解决方案3】:

    如上所述,这将是无效的 HTML,但您可以在每秒 &lt;li&gt; 元素的末尾添加 &lt;br/&gt;&amp;nbsp;

    http://jsfiddle.net/TrueBlueAussie/9uksT/2/

    $('ul:not(.root) li:odd').append("<br/>&nbsp;");
    

    更新:

    由于问题现在已经改变,包括 CSS,我不会这样做,而是使用选择器在 LI 上设置样式(如 Arun P Johny 所示)。例如

    $('ul:not(.root) li:odd').addClass('second')
    

    这适用于所有浏览器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      • 2021-12-22
      • 2010-10-08
      • 2021-08-18
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      相关资源
      最近更新 更多