如果第一个孩子是图像,则将第n个孩子(2)移动到第一个

时间:2018-03-19 03:02:03

标签: javascript prepend

我想要做的是首先检查是否在无序列表中第一个元素是图像,如果是图像,则将第一个孩子移动到第二个孩子或者如果它是&#39 ;更容易将第二个孩子移到第一个孩子身上。

<ul>
    <li><p>text</p></li>
    <li><img src="test.img" alt=""></li>
    <li><p>text2</p></li>
</ul>
<ul>
    <li><p>text</p></li>
    <li><img src="test.img" alt=""></li>
    <li><p>text2</p></li>
</ul>

然后完成的结果将如下所示:

// Attempt 5
        for (int n = 0; n < 99; ++n)
        {
            col = Settings.ForeignKeyName(tableNameHumanCase, foreignKey, fkName, relationship, 5);

            if (n > 0)
            {
                col += n;
            }

            if (ReverseNavigationUniquePropName.Contains(col))
                continue;

            if(addReverseNavigationUniquePropName)
            {
                ReverseNavigationUniquePropName.Add(col);
            }

            return col;
        }

我如何专门定位第一个列表并移动那个而不移动第二个列表?那么只针对第一个无序列表列表项并根据if语句移动它?我尝试过使用insertBefore但是我觉得我可能错了吗?

如果可能的话,不要使用jquery,并感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您可以遍历所有<ul>元素。检查第一个<li>子项是否有<img>标记。如果是,则在第二个<li>之后先移动<li>

请查看下面的代码示例:

$(function() {
  $('ul').each(function() {
    var $first = $(this).children().first();

    // If first <li> has an <image> child
    if ($first.has('img').length) {
      // Move the <li> to second position
      $first.insertAfter($first.next())
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<ul>
    <li><img src="test.img" alt="IMG"></li>
    <li><p>text</p></li>
    <li><p>text2</p></li>
</ul>
<hr>  
<ul>
    <li><p>text</p></li>
    <li><img src="test.img" alt="IMG"></li>
    <li><p>text2</p></li>
</ul>