ホームページ >ウェブフロントエンド >jsチュートリアル >jquery ドラッグソートの elements_jquery の例

jquery ドラッグソートの elements_jquery の例

WBOY
WBOYオリジナル
2016-05-16 17:03:311111ブラウズ

完全なコード: (aspx ファイルの最後にダウンロード)

コードをコピー コードは次のとおりです:

4903875889349c23fb1e6fed64d063d9

6969216a31bc79b02242c9625055cd5bjquery学习-jquery对元素拖动排序6e916e0f7d1e588d4f442bf645aedb2f
080b747a20f9163200dd0a7d304ba388
#ショー
{
色: 赤;
}
#リスト
{
カーソル: 移動;
幅: 300ピクセル;
}
#リストリー
{
境界線: 1 ピクセルの黄色の実線。
フロート: 左;
リストスタイルタイプ: なし;
マージントップ: 10px;
}
54f4bf82a62806916396a85a33e2cff4
d54ac6aba32e61a587eced4582e6bf052cacc6d41bbb37262a98f745aa00fbf0
a0b57ea161086ca401b0afbfe5e55b5d2cacc6d41bbb37262a98f745aa00fbf0
055d9d5ff16d85d950bd3dee4f983fb7
$(document).ready(function () {

//保存常用选择器
var list = $("#list"); //ul
var show = $("#show"); //出題
var orderlist = $("#orderlist"); //原顺序
var check = $("#check"); //データベースに更新されたかどうか

//保存原来的排列顺序
var order = [];
list.children("li").each(function () {
order.push(this.title); //原排列顺序存在title,到達後更新title
$(this).attr("title", "你可以拖動进行排序");
});
orderlist.val(order.join());
//排列操作を実行
list.sortable({
軸: 'y',//只能横向拖動
opacity: 0.7,// 移動時の透明度
update: function () {//順序付け動作が終了し、要素座標が変更されたときに、このイベントがトリガーされます。 送信(check.attr("チェック済み"));
}
});

//ajax更新
var Update = function (itemid, itemorder) {
$.ajax({
タイプ: "投稿"、
URL: "update.aspx"、
data: { id: itemid, order: orderlist.val() }, //id:新的排列对应的ID,order:原排列顺序
beforeSend: function () {
show.html("正在更新");
}、
成功: function (req) {
if (req == "100") {
show.html("更新成功");
}
else if (req == "001") {
show.html("失败,请稍後再试");
}
他 {
show.html("パラメータ不足");
}
}
});
};

//调用ajax更新メソッド
var 送信 = 関数 (更新) {
var order = [];
list.children("li").each(function () {
order.push(this.id);
});
var itemid = order.join(',');
//如果单选框选中,更新表中排列顺序
if (更新) {
更新(itemid);
}
他 {
show.html("");
}
};



});
fa53fefa8eafc7c836ea46f2cc284f0d
9c3bca370b5104690d9ef395f2c5f8d1


d0b49a8cc5bc368f08852e2bb67f6f73
c815a213562a9322a0dc3058a7ac9afc
fc5ed045d1f56719a27523643d821f52
16b28748ea4df4d9c2150843fecfba68

e6b7fdd11466f22e343cabf7b87edf3454bdf357c58b8a65c66d7c19c8e4d114
4a249f0d628e2318394fd9b75b4636b1jQuery对元素拖動排序473f0a7621bec819994bb5020d29372a
dc6dce4a544fdca2df29d5ac0ea9906b実行と同時にデータデータベースを更新します:30c47bf4adc8ff1138badea8f4fe3eba16b28748ea4df4d9c2150843fecfba68
dc6dce4a544fdca2df29d5ac0ea9906b
0f8531ca0c683e5fd3a8df294b858f0a
59b3daed4d0264c2eb8aa4a91a3527b4

c8dcef712100cff2a871460d68c81a33
0f4b241357cd7f0b74d006ab4d014d90bed06894275b65c1ab86501b08a632eb

c1f0412408b8db4bb25c31fe4d050b62
0d8b09f945d07b36002b87fe11547226bed06894275b65c1ab86501b08a632eb

a07ba8f92d4f52d210008fd120861fbe
9725627d5e56abc8f0a00c26f6421a5ebed06894275b65c1ab86501b08a632eb
929d1f5ca49e04fdcb27f9465b944689
16b28748ea4df4d9c2150843fecfba68
264c8b0e0a1db44ba947f405b03bda4d
a731f8bc68cea787037fc49fbe160a69
73a6ac4ed44ffec12cee46588e518a5e


以下、私たちはこの機能をさらに実行します。

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


有一个单选框,当用户选中后,拖动图片时对数据库中数据排序进行更改。隐藏域保存原来的图片排列顺序。ul显示图片列表。

为了能看得过去,稍微加了点样式:

var show = jQuery("#show"); //输出提示 
var orderlist = jQuery("#orderlist"); //原顺序 
var check = jQuery("#check"); //是否更新到数据库

首先将常用的选择器保存下来,这样后边调用就变得比较简洁。这一部大家肯定没有问题。^_^

//保存原来的排列顺序 
var order = []; 
list.children("li").each(function() { 
  order.push(this.title); //原排列顺序保存在title,得到后更改title 
  jQuery(this).attr("title", "你可以拖动进行排序"); 
}); 
orderlist.val(order.join(','));

保存原来的排列顺序到隐藏域。这里用到了数组的push()方法,就是将ul每个li中的title(原来的排列顺序)添加到数组中。最后用join()方法,得到了原排列顺序,返回一个字符串。现在排列顺序格式为1,2,3 。

//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("更新成功"); 
    } 
  }); 
};

接下来,将ajax更新块单独分出来。这样程序变得比较整洁,这块没有新东西。

//调用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(""); 
  } 
};

和得到排列顺序类似,将ID组成一个字符串传递给了Update()方法。函数中的参数update为checkbox是否选中。

//执行排列操作 
list.sortable({ 
  opacity: 0.7, 
  update: function() { 
    Submit(check.attr("checked")); 
  } 
});

最后,执行排列操作。后台部分就是对现在ID对应原来排列顺序的更新,相信大家并不陌生。

可以看出如果不进行数据库操作,该插件只需要调用sorttable便可完成对元素的拖动。

下载演示

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。