查找图片代码?

时间:2016-01-28 17:10:52

标签: javascript jquery

我有一个内容可编辑的div,它可以包含任何标签,例如

<p>hello</p>
<p>whatever <p>nested p is a bad idea but can happen</p></p>
<div>stuff</div>
<p>test<img></p>

对于给定元素,我需要在源顺序中找到它上面的img标记。图像标签可以是直接兄弟,也可以是兄弟的孩子,甚至是给定元素的父母。

1 个答案:

答案 0 :(得分:1)

这是一个非常简单的递归函数,它可以做你想要的并且通常可以工作。

&#13;
&#13;
function findPreceeding(element, targetType) {
  var target = element.prev(targetType);
  if (target.length > 0 || element.parent().length === 0)
    return target;
  else
    return findPreceeding(element.parent(), targetType);
}

$(function() {
  console.log(findPreceeding($("#div1"), "img").toArray());
  console.log(findPreceeding($("#div2"), "img").toArray());
  console.log(findPreceeding($("#div3"), "img").toArray());
  console.log(findPreceeding($("#div4"), "img").toArray());
});
&#13;
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>
  <img id="img1" src="http://lorempixel.com/50/50/" />
  <div id="div1">
    <img id="img2" src="http://lorempixel.com/50/50/" />
    <div id="div2">
      <img id="img3" src="http://lorempixel.com/50/50/" />
      <div id="div3">
        <div id="div4">
        </div>
      </div>
    </div>
  </div>
</div>
&#13;
&#13;
&#13;