Jquery计数LI和IF奇数做点什么

The*_*Kid 0 jquery if-statement html-lists

如果UL具有奇数个LI记录,我想<br />在第一个LI之后添加BREAK标记().

如果LI的数量为偶数,则结果为:

  <ul id="cat">
    <li><a href=""></a></li>
    <li><a href=""></a></li>
    <li><a href=""></a></li>
    <li><a href=""></a></li>
  </ul>
Run Code Online (Sandbox Code Playgroud)

如果LI的数量是ODD,则结果如下:

  <ul id="cat">
    <li><a href=""></a></li><br />
    <li><a href=""></a></li>
    <li><a href=""></a></li>
  </ul>
Run Code Online (Sandbox Code Playgroud)

我的jQuery片段:

$("#cat").each(function() {
    var elem = $(this);
    if (elem.children("li").length % 2 != 0) {
        elem.prepend("<br />");
    }
});
Run Code Online (Sandbox Code Playgroud)

它只会导致

      <ul id="cat">
<br />
        <li><a href=""></a></li>
        <li><a href=""></a></li>
        <li><a href=""></a></li>
      </ul>
Run Code Online (Sandbox Code Playgroud)

Nie*_*els 5

你做错了是你在UL之前.这将
在所有LI之前添加一个.如果您获得第一个LI,那么您after()将在LI之后添加BR.这也是无效的HTML.所以请为此使用CSS.

如果您仍想以这种方式使用Javascript:

$("#cat").each(function() {
    var elem = $(this);
    if (elem.children("li").length % 2 != 0) {
        elem.children("li").first().after("<br />");
    }
});
Run Code Online (Sandbox Code Playgroud)

但是为什么一个BR之后的LI?你不能用CSS解决这个问题吗?

li {
    display: block;
}
Run Code Online (Sandbox Code Playgroud)