手順: 1. マウスによる移動の効果を実現します。2. オブジェクトの最後の座標をドラッグし、その座標を使用して判断します。挿入する内容を決定する要素 4. insertBefore メソッドを使用して、ターゲット要素の前に挿入します。具体的なコードは次のとおりです: コードをコピーします コードは次のとおりです: テスト済みのドラッグ機能 "text/css"> body , div { margin: 0; font-size: 12px; } body { width: 960px; } {マージン: 0; リストスタイル: なし; .クリア: 両方; 高さ: 0px; .box { 幅: 600px; 高さ: 自動; 余白: 5px; 境界線: 1px; } 位置: 静的; 高さ: 80px;底部: 5px; 境界線: 1px 背景: #ccc; } .maindash { 位置: 絶対値; 幅: 5px; 境界線: 1px の背景: #ececec ; 不透明度: 0.7; } .hide { 幅: 600px; マージン-ボトム: 5px; } : 5px; 境界: 1px 破線 #f00; <br><script type= "text/javascript"> <br>$(document).ready( function () { <br>var range = { x: 0, y: 0 };//マウス要素 offset<br>var lastPos = { x: 0, y: 0, x1: 0, y1: 0 }; //ドラッグ オブジェクトの 4 つの座標<br>var tarPos = { x: 0, y: 0, x1: 0, y1: 0 } ; //対象要素オブジェクトの座標を初期化します<br>var theDiv = null, move = false; //ドラッグオブジェクトのドラッグ状態<br>var theDivId =0, theDivHeight = 0, theDivHalf = 0; tarFirstY = 0; / /ドラッグオブジェクトのインデックスと高さの初期化。 <br>var tarDiv = null, tarFirst, tempDiv; //挿入対象要素のオブジェクト、一時点線オブジェクト<br>$(".main").each(function(){ <br>$(this ) .mousedown(function (event){ <br>//ドラッグ オブジェクト<br>theDiv = $(this); <br>//マウス要素の相対オフセット<br>range.x =event.pageX - theDiv.offset ().left; <br>range.y = イベント.pageY - theDiv.offset().top; <br>theDivHeight = theDiv.height(); = theDivHeight/2; <br>move = true; <br>theDiv.attr("class","maindash") <br>// ドラッグした要素の前の位置に挿入します。 box) <br>$("<div class='dash'></div>").insertBefore(theDiv) <br>}); .mousemove(function (event) { <br>if (!move) return false; <br>lastPos.x =event.pageX - range.x; <br>lastPos.y =event.pageY - range.y; <br>lastPos.y1 = lastPos.y theDivHeight; <br>// マウスで要素をドラッグします<br>theDiv.css({left: lastPos.x 'px',top: lastPos.y 'px'} ); <br>/ / 要素をドラッグし、マウスを移動してターゲット要素を検索して挿入します。 <br>var $main = $('.main') // ローカル変数: 各要素の座標を再度取得します。並べ替えられた順序、 <br>tempDiv = $ (".dash") //一時的な破線ボックスのオブジェクトを取得します <br>$main.each(function () { <br>tarDiv = $(this); <br>tarPos.x = tarDiv.offset().<br>tarPos.y = tarDiv.height()/2; = $main.eq(0); // 最初の要素を取得します<br>tarFirstY = tarFirst.offset().top theDivHalf; //最初の要素オブジェクトの中心座標<br>//オブジェクトを最初の要素にドラッグしますPosition<br>if (lastPos .y <= tarFirstY) { <BR>tempDiv.insertBefore(tarFirst) <BR>} <BR>//挿入対象要素の座標を判定後、直接挿入 <BR>if (lastPos.y >= tarPos .y - theDivHalf && lastPos.y1 >= tarPos.y1 ) { <br>tempDiv.insertAfter(tarDiv) <br>} <br>}; ).mouseup(function(event) { <br>theDiv.insertBefore(tempDiv); // 要素をドラッグ アンド ドロップして点線の位置に挿入します。div<br>theDiv.attr("class", "main" ); // オブジェクトの初期スタイルを復元します<br>tempDiv.remove () // 新しく作成されたドット div <br>}); div1 div2 div3 div4 div5< /div>