完全なコード: (aspx ファイルの最後にダウンロード) コードをコピー コードは次のとおりです: jquery学习-jquery对元素拖动排序 <br> #ショー<br> { <br> 色: 赤; <br> }<br> #リスト<br> { <br> カーソル: 移動; <br> 幅: 300ピクセル; <br> }<br> #リストリー <br> { <br> 境界線: 1 ピクセルの黄色の実線。 <br> フロート: 左; <br> リストスタイルタイプ: なし; <br> マージントップ: 10px; <br> }<br> </スタイル> <br> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <br> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.js"></script> <br> <スクリプトタイプ="text/javascript"> <br> $(document).ready(function () { <br> <br> //保存常用选择器 <br> var list = $("#list"); //ul <br> var show = $("#show"); //出題 <br> var orderlist = $("#orderlist"); //原顺序 <br> var check = $("#check"); //データベースに更新されたかどうか <br> <br> //保存原来的排列顺序 <br> var order = []; <br> list.children("li").each(function () { <br> order.push(this.title); //原排列顺序存在title,到達後更新title <br> $(this).attr("title", "你可以拖動进行排序"); <br> }); <br> orderlist.val(order.join()); <br> //排列操作を実行 <br> list.sortable({ <br> 軸: 'y',//只能横向拖動 <br> opacity: 0.7,// 移動時の透明度 <br> update: function () {//順序付け動作が終了し、要素座標が変更されたときに、このイベントがトリガーされます。 送信(check.attr("チェック済み")); <br> }<br> }); <br> <br> //ajax更新<br> var Update = function (itemid, itemorder) { <br> $.ajax({ <br> タイプ: "投稿"、<br> URL: "update.aspx"、<br> data: { id: itemid, order: orderlist.val() }, //id:新的排列对应的ID,order:原排列顺序 <br> beforeSend: function () { <br> show.html("正在更新"); <br> }、<br> 成功: function (req) { <br> if (req == "100") { <br> show.html("更新成功"); <br> }<br> else if (req == "001") { <br> show.html("失败,请稍後再试"); <br> }<br> 他 { <br> show.html("パラメータ不足"); <br> }<br> }<br> }); <br> }; <br> <br> //调用ajax更新メソッド <br> var 送信 = 関数 (更新) { <br> var order = []; <br> list.children("li").each(function () { <br> order.push(this.id); <br> }); <br> var itemid = order.join(','); <br> //如果单选框选中,更新表中排列顺序 <br> if (更新) { <br> 更新(itemid); <br> }<br> 他 { <br> show.html(""); <br> }<br> }; <br> <br> <br> <br> }); <br> </スクリプト> <br> </head> <br> <br> <br> <form method="post" action="jquery-drag-order-sort.aspx" id="form1"> <br> <div class="aspNetHidden"> <br> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNDc3MzMwNjM4D2QWAgIBD2QWAgIBDxYCHgtfIUl0ZW1Db3VudAIDFgZmD2QWAmYPFQMCMTQBMSdodHRwOi8vd3d3LmJhaWR1LmNvbS9 pbWcvYmFpZHVfbG9nby5naWZkAgEPZBYCZg8VAwixMwEyL2h0dHA6Ly93d3cuZ29vZ2xlLmNvbS5oay9pbWFnZXMvc3Jwci9sb2dvM3cucG5nZAICD2QWAmYPFQMCMTYBMyxodHRwOi8vaW1 nMy5jbi5tc24uY29tL2ltYWdlcy8wODA5L2xvZ28xLnBuZ2RkDx67fZ2swhZiUjvFaE ziATRZTct5b77PuWvqXLCUlg=" /> <br> </div> <br> <br> <span id="show"></span> <br> <h1>jQuery对元素拖動排序</h1> <br> <div>実行と同時にデータデータベースを更新します:<input type="checkbox" id="check" /></div> <br> <div> <br> <input type="hidden" id="orderlist" /> <br> <ul id="リスト"> <br> <br> <li id="14" title="1"> <br> <img alt="img" src="http://www.baidu.com/img/baidu_logo.gif" /></li> <br> <br> <li id="13" title="2"> <br> <img alt="img" src="http://www.google.com.hk/images/srpr/logo3w.png" /></li> <br> <br> <li id="16" title="3"> <br> <img alt="img" src="http://img3.cn.msn.com/images/0809/logo1.png" /></li> <br> </ul> <br> </div> <br> </フォーム> <br> </ボディ> <br> </html> <br> <br> </div> <br> 以下、私たちはこの機能をさらに実行します。<p> </p> <div class="jb51code"> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:xhtml;"> <span id="show"> <div> <input id="check" type="checkbox" /> </div> <div> <input type="hidden" id="orderlist" /> <ul id="list"> <asp:Repeater ID="rptOrder" runat="server"> <ItemTemplate> <li id="<%#Eval("ID") %>" title="<%#Eval("OrderID") %>"> <img alt="img" src="<%#Eval("Link") %>" /> </li> </ItemTemplate> </asp:Repeater> </ul> </div> </pre><div class="contentsignin">ログイン後にコピー</div></div> <p><br /> </p> <p>有一个单选框,当用户选中后,拖动图片时对数据库中数据排序进行更改。隐藏域保存原来的图片排列顺序。ul显示图片列表。</p> <p>为了能看得过去,稍微加了点样式:</p> <div class="jb51code"> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;"> var show = jQuery("#show"); //输出提示 var orderlist = jQuery("#orderlist"); //原顺序 var check = jQuery("#check"); //是否更新到数据库</pre><div class="contentsignin">ログイン後にコピー</div></div> </div> <p>首先将常用的选择器保存下来,这样后边调用就变得比较简洁。这一部大家肯定没有问题。^_^</p> <div class="jb51code"> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;"> //保存原来的排列顺序 var order = []; list.children("li").each(function() { order.push(this.title); //原排列顺序保存在title,得到后更改title jQuery(this).attr("title", "你可以拖动进行排序"); }); orderlist.val(order.join(','));</pre><div class="contentsignin">ログイン後にコピー</div></div> </div> <p>保存原来的排列顺序到隐藏域。这里用到了数组的push()方法,就是将ul每个li中的title(原来的排列顺序)添加到数组中。最后用join()方法,得到了原排列顺序,返回一个字符串。现在排列顺序格式为1,2,3 。</p> <div class="jb51code"> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;"> //ajax更新 var Update = function(itemid, itemorder) { jQuery.ajax({ type: "post", url: "update.aspx", //id:新的排列对应的ID,order:原排列顺序 data: { id: itemid, order: orderlist.val() }, beforeSend: function() { show.html("正在更新"); }, success: function() { show.html("更新成功"); } }); };</pre><div class="contentsignin">ログイン後にコピー</div></div> </div> <p>接下来,将ajax更新块单独分出来。这样程序变得比较整洁,这块没有新东西。</p> <div class="jb51code"> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;"> //调用ajax更新方法 var Submit = function(update) { var order = []; list.children("li").each(function() { order.push(this.id); }); var itemid = order.join(','); //如果单选框选中,则更新表中排列顺序 if (update) { Update(itemid); } else { show.html(""); } };</pre><div class="contentsignin">ログイン後にコピー</div></div> </div> <p>和得到排列顺序类似,将ID组成一个字符串传递给了Update()方法。函数中的参数update为checkbox是否选中。</p> <div class="jb51code"> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;"> //执行排列操作 list.sortable({ opacity: 0.7, update: function() { Submit(check.attr("checked")); } });</pre><div class="contentsignin">ログイン後にコピー</div></div> </div> <p>最后,执行排列操作。后台部分就是对现在ID对应原来排列顺序的更新,相信大家并不陌生。</p> <p>可以看出如果不进行数据库操作,该插件只需要调用sorttable便可完成对元素的拖动。</p> <p><a target="_blank" href="http://xiazai.jb51.net/201407/yuanma/jquery-drag-sort-order(jb51.net).rar">下载演示</a></p>