jquery中div的开关位置
我想在单击标题时切换div的位置。以下是我的HTML示例:jquery中div的开关位置,jquery,Jquery,我想在单击标题时切换div的位置。以下是我的HTML示例: <div class="main-wrapper"> <div class="header-wrapper"> <h3>Header</h3> </div> <p>Paragraph</p> </div> <div class="main-wrapper"> <div class="
<div class="main-wrapper">
<div class="header-wrapper">
<h3>Header</h3>
</div>
<p>Paragraph</p>
</div>
<div class="main-wrapper">
<div class="header-wrapper">
<h3>Header</h3>
</div>
<p>Paragraph</p>
</div>
<div class="main-wrapper">
<div class="header-wrapper">
<h3>Header</h3>
</div>
<p>Paragraph</p>
</div>
问题是,现在它试图将所有的.main包装放在第一个之前,但我只想要一个保存我单击的h3的包装。您应该将所有的主包装元素嵌入一个容器(或使用主体): HTML:
确实不清楚您想做什么,但您可以获得您用
$(this.parent().parent()
单击的.main包装器 看看这个:
abovle行实际上选择了主包装类的所有div。在事件回调函数中,这指的是单击的元素(基本上是事件的目标)
我对代码的拆分比您通常要多一些;发生的情况是:
firstWrapper变量使用主包装器类保存对所有div中第一个的引用
clickedWrapper:使用父级(“.main wrapper”)查找Anterstor树以查找具有主包装类的祖先元素
If指令检查clickedWrapper是否不是第一个。我们什么也不做。如果不是,则在firstWrapper之前插入clickedWrapper
$(".header-wrapper h3").click( function() { $(".main-wrapper").prependTo(".header-wrapper:first"); });
<div class="container">
<div class="main-wrapper">
<div class="header-wrapper">
<h3>Header</h3>
</div>
<p>Paragraph 1</p>
</div>
<div class="main-wrapper">
<div class="header-wrapper">
<h3>Header</h3>
</div>
<p>Paragraph 2</p>
</div>
<div class="main-wrapper">
<div class="header-wrapper">
<h3>Header</h3>
</div>
<p>Paragraph 3</p>
</div>
</div>
$(".header-wrapper h3").click(function () {
var $mainrWrap = $(this).closest(".main-wrapper");
$(this).closest(".container").prepend($mainrWrap);
});
$(".header-wrapper h3").click(function () {
if (!$(this).closest(".main-wrapper").is(":first-child")) {
$(this).closest(".main-wrapper").insertBefore(".main-wrapper:first");
}
});
$(".main-wrapper")
var firstWrapper = $(".main-wrapper").first(),
clickedWrapper = $(this).parents(".main-wrapper");
if (!clickedWrapper.is(":first-child")) {
clickedWrapper.insertBefore(firstWrapper)
}