我在列表中有以下标记(重复的相同列表格式):
<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”元素,然后在其中搜索“内部”div 元素来实现的。您的原始代码使用 closest
函数搜索“div.inner”元素,该函数查找父元素,“div.inner”元素是链接的同级元素,因此它没有找到任何内容。
关于jquery - 使用 .closest() 在之前插入 - 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8122421/