天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

關(guān)于二級(jí)目錄拖拽排序的實(shí)現(xiàn)(源碼示例下載)

在開(kāi)發(fā)項(xiàng)目中經(jīng)常碰到二級(jí)目錄形式。比如文章模塊、產(chǎn)品模塊,很多應(yīng)多都基于兩級(jí)分類(lèi)形式。而普通的解決排序方案,不管是一級(jí)分類(lèi),還是多級(jí)分類(lèi),都是由管理員在后臺(tái)手動(dòng)編輯同級(jí)分類(lèi)排序的值來(lái)設(shè)置排序,根據(jù)該值的大小決定顯示的順序。這樣的操作方式比較煩瑣。jQuery有對(duì)于排序采用拖拽方式來(lái)實(shí)現(xiàn)排序,從用戶層面,這樣的操作非常直觀,操作簡(jiǎn)便。曾經(jīng)在一個(gè)項(xiàng)目中,產(chǎn)品分類(lèi)采用的是兩級(jí)分類(lèi),顯示如下圖所示:

在排序問(wèn)題上,決定使用jQuery的拖拽插件來(lái)實(shí)現(xiàn):拖拽一級(jí)分類(lèi)時(shí),對(duì)一級(jí)分類(lèi)進(jìn)行排序;拖拽某一級(jí)分類(lèi)下面的子分類(lèi)時(shí),對(duì)該子分類(lèi)進(jìn)行拖拽排序。

拖拽一級(jí)分類(lèi)名稱(chēng)前臺(tái)的“+”號(hào)圖標(biāo),對(duì)一級(jí)分類(lèi)進(jìn)行拖拽排序。

拖拽某一級(jí)分類(lèi)下的二級(jí)分類(lèi)名稱(chēng)前的“-”號(hào)圖標(biāo),對(duì)該分類(lèi)下的二級(jí)分類(lèi)進(jìn)行拖拽排序;

下面是實(shí)現(xiàn)上述功能的數(shù)據(jù)庫(kù)結(jié)構(gòu)及程序代碼

數(shù)據(jù)庫(kù)結(jié)構(gòu)

復(fù)制代碼 代碼如下:
CREATE TABLE IF NOT EXISTS `product_classify` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `parentId` int(10) unsigned NOT NULL,
  `name` varchar(50) DEFAULT NULL,
  `sort` int(10) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;

導(dǎo)入數(shù)據(jù)
復(fù)制代碼 代碼如下:
INSERT INTO `product_classify` (`id`, `parentId`, `name`, `sort`) VALUES
(1, 0, '魔術(shù)道具', 1),
(2, 1, '近景魔術(shù)', 2),
(3, 1, '舞臺(tái)魔術(shù)', 1),
(4, 1, '劉謙魔術(shù)', 3),
(5, 0, '千術(shù)道具', 2),
(6, 5, '麻將牌九系列', 3),
(7, 5, '撲克系列', 1),
(8, 5, '色子系列', 5),
(9, 5, '變牌器系列', 4),
(10, 5, '高科技系列', 2);

樣式代碼
復(fù)制代碼 代碼如下:
<style type="text/css">
<!--
body{margin:0px;}
img{vertical-align:middle;}
.tab td{height:28px;font-size:13px;background-color:#FFFFFF;}
form{margin:0px;padding:0px;}
.edit,.del,.pointer{cursor:pointer;}
.ui-move{border:1px dashed #666;height:30px;}
.title{text-align:left;padding-left:7px;height:30px;font-size:13px;font-weight:bold;color:#444;}

ul,li{ margin:0px;padding:0px;}
.left_nav{margin:0px 10px 0 10px;padding-top:5px;font-size:14px;line-height:30px;}
.left_nav li{list-style-type:none;}
.nav{width:280px;list-style-type:none;text-align:left;}
.nav li span{margin:0 0px 0 10px;font-size:12px;}
/*==================二級(jí)目錄===================*/
.nav li ul{list-style:none;text-align:left;margin-top:4px;}
.nav li ul li{ text-indent:25px;border:none;/*二級(jí)目錄的背景色*/ margin:-7px 0 0 0;_margin:0px 0 8px 0;}
.navv li span{margin:0 0px 0 10px;font-size:12px;}
.f{vertical-align: middle;width:16px;height:16px;}
.nav div{display:none;}
-->
</style>

載入js文件及代碼
復(fù)制代碼 代碼如下:
<script language="JavaScript" type="text/JavaScript" src="js/jQuery1.6.2.js"></script>
<script language="JavaScript" type="text/JavaScript" src="js/jquery-ui-1.7.1.custom.min.js"></script>
<script>
$(document).ready(function(){
  $("#mm").sortable({
    opacity: 0.5,
    cursor:'move',
    revert:true,
    handle:'.f',
    placeholder:'ui-move',
    update:function(){
      serial=$(this).sortable("serialize");
      $("#return").load("myRun/sort.php?"+serial);
    }
  });
  $("#mm div").sortable({
    opacity: 0.5,
    cursor:'move',
    revert:true,
    handle:'.t',
    placeholder:'ui-move',
    update:function(){
      serial=$(this).sortable("serialize");
      $("#return").load("myRun/sort.php?"+serial);
    }
  });
  $(".f").toggle(function(){
    if($(this).attr("src")=='images/plus.gif'){
      $("#mm").find(".f").attr("src","images/plus.gif");//將全部大類(lèi)前面的圖標(biāo)改為加號(hào)
      $("#mm").find("div").hide();//隱藏子類(lèi)
      $('div',$(this).parents('.nav:first')).show();//顯示當(dāng)前點(diǎn)擊大類(lèi)的子類(lèi)
      $(this).attr("src","images/nofollow.gif");//將當(dāng)前點(diǎn)擊的大類(lèi)前面的加號(hào)圖標(biāo)更改為減號(hào)圖標(biāo)
    }else{
      $(this).attr("src","images/plus.gif");
      $('div',$(this).parents('.nav:first')).hide();//$($(this).parents('div:first')+'.odd2').hide();
    }
  },function(){
    if($(this).attr("src")=='images/plus.gif'){
      $("#mm").find(".f").attr("src","images/plus.gif");
      $("#mm").find("div").hide();
      $('div',$(this).parents('.nav:first')).show();
      $(this).attr("src","images/nofollow.gif");
     }else{
      $(this).attr("src","images/plus.gif");
      $('div',$(this).parents('.nav:first')).hide();//$($(this).parents('div:first')+'.odd2').hide();
     }
  });
  //$('.odd2','table:first').hide();//初始化 隱藏主題分類(lèi)    <--改動(dòng):在css中把子類(lèi)display:none。這樣可以直接顯示第一個(gè)。以前的效果是全部展開(kāi),然后在全部隱藏,然后在顯示第一個(gè)。不太好看。
  $('#mm ul:first div').show();//顯示第一個(gè)主題分類(lèi)列表
  $('#mm ul:first .f').attr("src","images/nofollow.gif");//改變圖片為“-”狀
});
</script>

顯示代碼
復(fù)制代碼 代碼如下:
<div class="left_nav" id="mm">
<span style='display:none' id="menu_productclassify"></span>
<?php
//通過(guò)where條件來(lái)過(guò)濾子類(lèi),僅顯示分類(lèi)(一級(jí))
$sql='select a.id,a.parentId,a.name,a.sort,count(b.id) as count from product_classify as a';
$sql.=' left join product_classify as b on b.parentId=a.id where a.parentId=0';
$sql.=' group by a.id order by a.sort';
$query=mysql_query($sql);
if(mysql_num_rows($query)){
  while($arr=mysql_fetch_array($query)){
    echo '<ul id="menu_'.$arr[id].'" class="nav">';
    echo "<li id='nav_li'><img class=f src='images/plus.gif'>$arr[name]($arr[count])";
    $sql="select a.id,a.name,a.sort from product_classify as a where a.parentId=$arr[id] group by a.id order by a.sort";
    $query2=mysql_query($sql);
    if(mysql_num_rows($query2)){
      echo "<div id='two_$arr[id]'><span style='display:none' id='menu_productclassify'></span>";
      while($arr2=mysql_fetch_array($query2)){
        echo "<ul id='menu_$arr2[id]' class='navv'>";
        echo "<li><img class=t src='images/nofollow.gif'>$arr2[name]</li>";
        echo "</ul>";
      }
      echo '</div>';
    }
    echo "</li></ul>";
  }
}else{
  echo '<li id="nav_li">暫無(wú)產(chǎn)品分類(lèi)</li>';
}
?>
</div>

排序操作sort.php
復(fù)制代碼 代碼如下:
<?php
include("../conn.php");
$menu=$_GET['menu'];
switch(strtolower($menu[0])){
  case 'productclassify':
    $table='product_classify';
    break;
}
for($i=1;$i<count($menu);$i++){
  $sql='UPDATE '.$table.' SET sort=' . $i . ' WHERE id=' . $menu[$i];
  mysql_query($sql);
}
?>

實(shí)例下載
二級(jí)目錄拖拽排序的實(shí)現(xiàn)及演示源碼下載

php技術(shù)關(guān)于二級(jí)目錄拖拽排序的實(shí)現(xiàn)(源碼示例下載),轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产亚洲精品V在线观看一 国产亚洲精品a在线观看app | 在线不卡日本v二区 | 领导边摸边吃奶边做爽在线观看 | 嫩草影院久久国产精品 | 9亚洲欧洲免费无码在线 | 国产精品美女WWW爽爽爽视频 | 精品久久久久久综合网 | 亚洲人人为我我为人人 | 韩国和日本免费不卡在线 | 翁熄性放纵交换01 | 国产在线精品亚洲第一区 | 国产色婷亚洲99精品AV在 | 亚洲一区在线观看视频 | 99久久人妻无码精品系列性欧美 | 日本另类xxxx | 久久电影精品 | 国产精品一区二区三区免费 | 国语大学生自产拍在线观看 | 成人在线免费视频 | 国产欧美日韩网站 | 亚洲欧美韩国综合色 | 毛片视频大全 | 亚洲AV久久无码精品热九九 | 91免费网站在线看入口黄 | 1024人成网站色www下载 | A国产一区二区免费入口 | 使劲别停好大好深好爽动态图 | 2023国产精品一卡2卡三卡4卡 | 最近高清中文字幕无吗免费看 | 91伊人久久大香线蕉 | 亲爱的妈妈6韩国电影免费观看 | 好吊射视频988gaocom | 国产呦精品一区二区三区下载 | 草莓视频在线免费观看 | 啪啪激情婷婷久久婷婷色五月 | 野花日本免费完整版高清版动漫 | 亚洲精品无码久久久久A片 亚洲精品无码国产爽快A片百度 | 久久久免费观看 | 一起洗澡的老师免费播放 | 伸进同桌奶罩里摸她胸作文 | 国产精品婷婷五月久久久久 |