Home >Web Front-end >JS Tutorial >How jQuery implements move up and move down based on sorting function
The example in this article describes jQuery’s method of moving up and down based on the sorting function. Share it with everyone for your reference, the details are as follows:
effect
idea,
swap sort with adjacent elements.
The premise is that each element has its own sort value, which is not zero.
<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%"How jQuery implements move up and move down based on sorting function" ></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>
Click to trigger the up method and down method.
Get the current id.
Get adjacent elements through 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}); } } }); } }
Several jQuery methods are used here, prev(), next(), before(), after(). And effects, fadeOut(), fadeIn(). And some simple logical judgments and skills.
php background processing,
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'); }