5

我在列表中有以下标记(重复相同的列表格式):

    <li class="item">
        <div class="outer">
            <p>Some text</p>
            <div class="inner">Some div text</div>
        </div>
        <a class="link" href="#">Link</a>
    </li>

我希望将 a.link 移动到每个列表项中的 p 和 div.inner 之间。

我正在使用以下脚本:

    $("li.item a.link").each(function() {
        $(this).closest("div.inner").before(this);
    }); 

但我只是收到错误消息:“$(this).closest 不是函数”

为什么 .closest() 不起作用...似乎经常被推荐。有没有不同的方法来实现这一点?

非常感谢。

4

1 回答 1

6

尝试 -

$("li.item a.link").each(function() {
    $(this).closest('li').find(".inner").before(this);
});

closest如果不适合您,这也可以使用-

$("li.item a.link").each(function() {
    $(this).parent('li').find(".inner").before(this);
});  

演示 - http://jsfiddle.net/MkD8j/2/

这两种方法都是通过查找最近的父“li”元素然后搜索“inner”div 元素来实现的。您的原始代码正在使用查找父元素的函数搜索“div.inner”closest元素,“div.inner”元素是链接的兄弟,因此它没有找到任何东西。

于 2011-11-14T14:15:47.450 回答