Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery中div的开关位置_Jquery - Fatal编程技术网

jquery中div的开关位置

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的位置。以下是我的HTML示例:

<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)
    }