この記事の例では、ソート機能に基づいて上下に移動する jQuery の方法を説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
効果
アイデア、
隣接する要素との並べ替え。
前提として、各要素にはゼロではない独自の並べ替え値があります。
<tr id="{sh:$vo.id}"> <td> <span onclick="up(this);" class="glyphicon glyphicon-arrow-up text-danger up" style="cursor: pointer;" title="上移" aria-hidden="true"></span> <span onclick="down(this);" class="glyphicon glyphicon-arrow-down text-danger down" style="cursor: pointer;" title="下移" aria-hidden="true"></span> </td> <td> <span title="{sh:$vo.user_id}">{sh:$vo.store_name}</span> </td> <td class="center"><a href="{sh:$vo.logo}" target="_blank"><img src="{sh:$vo.logo}" style="max-width:90%"jQuery がソート関数に基づいて上に移動および下に移動する方法を実装する方法" ></td> <td class="center">{sh:$vo.category_name}</td> <td class="center edit"> <a val="{sh:$vo.store_id}" onclick="view(this);" class="view btn btn-success" href="javascript:void(0);" title="查看"> <i class="halflings-icon white zoom-in"></i> </a> </td> </tr>
クリックして、up メソッドと down メソッドをトリガーします。
現在のIDを取得します。
jQuery を介して隣接する要素を取得します。
// 上移 function up(obj){ var $tr = $(obj).parents("tr"); if ($tr.index() != 0) { var current_id = $tr.attr('id'); var exchange_id = $tr.prev("tr").attr('id'); $.ajax({ url: '{sh::U("Mall/ajax","todo=exchange_sort")}', type: 'POST', data: 'current_id='+current_id+'&exchange_id='+exchange_id, success:function(json) { if (json == 1) { $tr.fadeOut().fadeIn(); $tr.prev().before($tr); layer.msg('上移成功', {icon: 1}); } else { layer.msg('上移失败', {icon: 2}); } } }); } } // 下移 function down(obj) { var len = $(".down").length; var $tr = $(obj).parents("tr"); if ($tr.index() != len - 1) { var current_id = $tr.attr('id'); var exchange_id = $tr.next("tr").attr('id'); $.ajax({ url: '{sh::U("Mall/ajax","todo=exchange_sort")}', type: 'POST', data: 'current_id='+current_id+'&exchange_id='+exchange_id, success:function(json) { if (json == 1) { $tr.fadeOut().fadeIn(); $tr.next().after($tr); layer.msg('下移成功', {icon: 1}); } else { layer.msg('下移失败', {icon: 2}); } } }); } }
ここでは、prev()、next()、before()、after() といういくつかの jQuery メソッドが使用されています。そしてエフェクト、fadeOut()、fadeIn()。そして、いくつかの簡単な論理的判断とスキル。
phpバックグラウンド処理、
case 'exchange_sort': $mallShopModel = M('Mall_shop'); $current_id = $this->_post('current_id','trim'); $exchange_id = $this->_post('exchange_id','trim'); $current_sort = $mallShopModel->where(array('id'=>$exchange_id))->getField('sort'); $exchange_sort = $mallShopModel->where(array('id'=>$current_id))->getField('sort'); $cdata['id'] = $current_id; $cdata['sort'] = $current_sort; $cres = $mallShopModel->save($cdata); $edata['id'] = $exchange_id; $edata['sort'] = $exchange_sort; $eres = $mallShopModel->save($edata); if ($cres !== FALSE && $eres !== FALSE){ exit('1'); } else { exit('2'); }