在图像之后找到关闭锚标记

时间:2014-06-17 05:30:57

标签: javascript jquery html css dom

我想在关闭锚标签后立即将div移动到现场。我得到的只是图像类名。如何找到包装图像的结束锚标记?

<a href="#"><img class="cat-image" src="http://placekitten.com/200/300" title="Funky roots" /></a>

在JS Fiddle上我有一个例子,我在列表中迭代寻找具有某个类名的图像。如果该图像存在,我想将'.moveMe'移动到结束锚标记之后。

不幸的是我无法修改html。我无法在锚点或图像标签中添加id或类,也不能将整个事物包装在div中。

HTML:

<ul class='testList'>
    <li class="listItem-0">
        <div class="moveMe"></div> <pre>
        <div class="wrapper">
            <a href="#"><img class="cat-image" src="http://placekitten.com/200/300" title="Funky roots" /></a><!-- moveMe div here -->
        </div>
        <div class="summary"></div>
        </pre>

    </li>
    <li class="listItem-1">
        <div class="moveMe"></div>  <pre>
        <div class="wrapper">
            <div></div>
        </div>
        <div class="summary"></div>
        </pre>

    </li>
    <li class="listItem-2">
        <div class="moveMe"></div>  <pre>
        <div class="wrapper">
            <a href="#"><img class="cat-image" src="http://placekitten.com/300/400" title="bigger cat pic" /></a>
        </div>
        <div class="summary"></div>
        </pre>

    </li>
</ul>

JS:

var listItems = $(".testList li");

listItems.each(function (idx, li) {
    if ($(li).find('.cat-image').length) {
        console.log('listItemContent image==>', $('pre').find('.cat-image'));  
        /*$(li).find('???? </a>  ????').append($(li).find('.moveMe'));*/
    }
    console.log($('.testList').html());
});

JS Fiddle

2 个答案:

答案 0 :(得分:4)

尝试在此上下文中使用.after()

var listItems = $(".testList li");
var cache = null;

listItems.each(function (idx, li) {
    cache = $(li).find('.cat-image');
    if (cache.length) {
      cache.parent().after($(li).find('.moveMe'));
    }
});

DEMO

答案 1 :(得分:0)

您可以按照以下方式执行此操作:

var listItems = $(".testList li");
listItems.each(function (idx, li) {
    var jli = $(li);
    jli.find(".cat-image")
       .closest("a")
       .after(jli.find(".moveMe"));
});

如果您愿意,可以缩减为一行:

var listItems = $(".testList li");
listItems.each(function (idx, li) {
    $(li).find(".cat-image").closest("a").after($(li).find(".moveMe"));
});

http://jsfiddle.net/MBTNU/5/