用jQuery切换2个div的位置

Cyb*_*ell 30 html jquery

我想知道用jQuery切换两个div的位置是否可行.

我有两个这样的div

<div class="div1">STUFF ONE</div>
<div class="div2">STUFF TWO</div>
Run Code Online (Sandbox Code Playgroud)

因此,如果div2有内容(或不只包含空格更多)它切换顺序div1div2

所以这:

<div class="div1">STUFF ONE</div>
<div class="div2">STUFF TWO</div>
Run Code Online (Sandbox Code Playgroud)

会成为这样的:

<div class="div2">STUFF TWO</div>
<div class="div1">STUFF ONE</div>
Run Code Online (Sandbox Code Playgroud)

但如果是这样的话:

<div class="div1">STUFF ONE</div>
<div class="div2"></div>
Run Code Online (Sandbox Code Playgroud)

或这个:

<div class="div1">STUFF ONE</div>
<div class="div2">    </div>
Run Code Online (Sandbox Code Playgroud)

它不会做任何事情.

另外......如果可行,如果切换我想添加一个类div1.

任何有关这方面的帮助将非常感谢.

更新:

我忘了补充一点,我必须在同一页面上的多个实例中运行它.

每个实例的格式如下:

<div class="view-container"> 
  <div class="view-content"> 
   <div class="views-row">
     <div class="div1">STUFF ONE</div>
     <div class="div2">STUFF TWO</div>
   </div>
   <div class="views-row">
     <div class="div1">STUFF ONE</div>
     <div class="div2">STUFF TWO</div>
   </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

Rus*_*sak 41

我会投入我的解决方案

$('.div2:parent').each(function () {
    $(this).insertBefore($(this).prev('.div1'));
});
Run Code Online (Sandbox Code Playgroud)

编辑:不适用于div2中的空白.这是一个更新的解决方案:

$('.div2').each(function () {
    if (!$(this).text().match(/^\s*$/)) {
        $(this).insertBefore($(this).prev('.div1'));
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 我真的很喜欢这个解决方案。非常简约。 (2认同)

Vig*_*ond 20

这是一个例子:

http://jsfiddle.net/52xQP/1/

首先,您要克隆元素.然后,检查条件是否为div2为空.然后,进行交换:

div1 = $('#div1');
div2 = $('#div2');

tdiv1 = div1.clone();
tdiv2 = div2.clone();

if(!div2.is(':empty')){
    div1.replaceWith(tdiv2);
    div2.replaceWith(tdiv1);

    tdiv1.addClass("replaced");
}
Run Code Online (Sandbox Code Playgroud)