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

    <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()不起作用...似乎经常建议使用。是否有其他方法可以实现这一目标?

非常感谢。

最佳答案

尝试 -

$("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元素来实现的。您的原始代码使用closest函数搜索“div.inner”元素,该函数查找父元素,“div.inner”元素是链接的同级元素,因此未找到任何内容。

关于jquery - 使用.closest()插入之前-不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8122421/

10-13 01:07