本文實例講述了jQuery基於排序功能實現上移、下移的方法。分享給大家供大家參考,具體如下:
效果

思路,
跟相鄰元素,互換sort。
前提是每一個元素都有自己的sort值,不為零。
<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}" width='30px;'></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});
}
}
});
}
}
這裡用到了幾個jQuery方法,prev(),next(),before(),after()。以及效果,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');
}
更多關於jQuery相關內容感興趣的讀者可查看本站專題:《jQuery排序技巧總結》、《jQuery操作DOM節點方法總結》、《jQuery擴展技巧總結》、《jQuery常用插件及用法總結》、《jQuery拖拽特效與技巧總結》、《jQuery表格(table)操作技巧匯總》、《jquery中Ajax用法總結》、《jQuery常見經典特效匯總》、《jQuery動畫與特效用法總結》及《jquery選擇器用法總結》
希望本文所述對大家jQuery程序設計有所幫助。