jQueryMobile 和jQueryMUI手机端树形选择

这个就我这两天做的经验来看,不要像web端的那样父页面和树形选择页面分开来写,手机端合在一个页面会更好写

思路:

         由于没有找到很好的相关插件,所以CSS我是自己写的,JS我调用了web的插件的ZTree,再加上一些js控制,可以达到目的,效果图如下

注意事项:

          1:要写ztree中的setting,同时初始化,

                   zTreeObj = $.fn.zTree.init($("#depTree"), depSetting, data);

          2:要获取到所有的对象

              treeObj=$.fn.zTree.getZTreeObj("depTree");
                treeNodes = treeObj.transformToArray(treeObj.getNodes());

         把ztree渲染的树隐藏起来,在页面中点击的时候和隐藏的ztree同步,就可以达到使用ztree的功能的目的

下面是代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>${systemTitle}</title>
    <meta http-equiv="Pragma" content="no-cache" />
    <meta http-equiv="Cache-Control" content="no-cache,must-revalidate" />
    <meta http-equiv="Expires" content="0" />
    <meta name="viewport" id="viewport" content="width=device-width, initial-scale=1" />
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-touch-fullscreen" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black" />

    <script src="mobileApply/js/jquery-1.8.2.js"></script>
    <script src="mobileApply/js/jquery.mobile-1.1.0-mini.js"></script>
    <script src="mobileApply/js/myShowImage.js"></script>
    <link rel="stylesheet" href="mobileApply/css/jquery.mobile-1.1.0-mini.css" type="text/css" />
    <link rel="stylesheet" href="mobileApply/css/myCss.css" type="text/css" />
    <script src="${my_js_path}"></script><script src="mobileApply/js/myShowSystemFile.js"></script>
    <script language="javascript" type="text/javascript" src="dateTool/WdatePicker.js"></script>


    <script type="text/javascript" src="jquery/map.js"></script>
    <script type="text/javascript" src="jquery/jquery.ztree.all-3.5.min.js"></script>
    <link rel="stylesheet" href="jquery/zTreeStyle/zTreeStyle.css" type="text/css">
</head>
<style>
    .dep{
        margin-left: 50px !important;
        line-height: 50px;
    }
    .out-border{
        background-color: lightgrey;
        height: 50px;
        border-radius: 10px;
    }

    .selected{
        width: 15px !important;
        height: 15px !important;
        margin: 17px 0px 0px 0px !important;
        background : url(mobileApply/images/tree/2.png) no-repeat !important;
    }
    .unselected{
          	    width: 15px !important;
        height: 15px !important;
        margin: 17px 0px 0px 0px !important;
        background : url(mobileApply/images/tree/3.png) no-repeat !important;
    }

    .childSelected{
        width: 15px !important;
        height: 15px !important;
        margin: 17px 0px 0px 0px !important;
        background : url(mobileApply/images/tree/1.png) no-repeat !important;
    }
</style>
<body>
<form action="" id="form1" name="webForm" method="post">
<div data-role="page" id="index">
    <div style="clear:both"></div>
    <div data-role="header" class="footer-docs"  data-theme="b" data-position="fixed" id="heder">
        <a href="#" onClick="backFile()" class="ui-btn-left ui-btn ui-btn-up-b ui-shadow ui-btn-corner-all ui-btn-icon-left"  data-icon="arrow-l" data-theme="b" data-corners="true" data-shadow="true" data-iconshadow="true" data-wrapperels="span">
          <span class="ui-btn-inner ui-btn-corner-all">
            <span class="ui-btn-text">返回</span>
            <span class="ui-icon ui-icon-arrow-l ui-icon-shadow"></span>
          </span>
        </a>
        <h1 class="ui-title" role="heading" aria-level="1"></h1>
        <a href="" data-icon="home" data-theme="b" data-ajax="false" data-corners="true" data-shadow="true" data-iconshadow="true" data-wrapperels="span">
            <span class="ui-btn-text">首页</span>
        </a>
    </div>
    <div data-role="content" style="background-color:#FFF">
        <div id="content1">
            
        </div>

        <div id="content" style="display: none"></div>
        <ul style="display: none"><li id="depTree" class="ztree"></li></ul>
	    <div data-role="footer" data-id="mainFooter" data-position="fixed" data-theme="c" id="footer">
			<div data-role="navbar" data-grid="a" data-inset="true">
				<ul class="apple-navbar-ui comboSprite">
				    <li><a href="#" data-iconpos="top" data-icon="check" data-ajax="false" onclick="SendOfficialDoc()">转发文件<span class="ui-li-count"></span></a></li>
					<li><a href="mobileMake.do?method=fileReceiveList" data-iconpos="top" data-icon="back" data-ajax="false" >返回列表</a></li>
				</ul>
			</div>
		</div>	  
</div>
<input name="depsId"  id="depsId" type="hidden" value="">
</form>
</body>
</html>
<script type="text/javascript">
    function showTree() {
        var headContent="<a href=\"#\" onClick=\"backFile()\" class=\"ui-btn-left ui-btn ui-btn-up-b ui-shadow ui-btn-corner-all ui-btn-icon-left\"  data-icon=\"arrow-l\" data-theme=\"b\" data-corners=\"true\" data-shadow=\"true\" data-iconshadow=\"true\" data-wrapperels=\"span\">\n" +
                "          <span class=\"ui-btn-inner ui-btn-corner-all\">\n" +
                "            <span class=\"ui-btn-text\">返回</span>\n" +
                "            <span class=\"ui-icon ui-icon-arrow-l ui-icon-shadow\"></span>\n" +
                "          </span>\n" +
                "        </a>\n" +
                "        <h1 class=\"ui-title\" role=\"heading\" aria-level=\"1\">公文转发</h1>\n" +
                "               <a href=\"mobileMake.do?method=index\" data-icon=\"home\" data-theme=\"b\" data-ajax=\"false\" data-corners=\"true\" data-shadow=\"true\" data-iconshadow=\"true\" data-wrapperels=\"span\" class=\"ui-btn-right ui-btn ui-btn-up-b ui-shadow ui-btn-corner-all ui-btn-icon-left\">\n" +
                "                    <span class=\"ui-btn-inner ui-btn-corner-all\">\n" +
                "                        <span class=\"ui-btn-text\">\n" +
                "                            <span class=\"ui-btn-text\">首页</span>\n" +
                "                        </span>\n" +
                "                        <span class=\"ui-icon ui-icon-home ui-icon-shadow\">&nbsp;</span>\n" +
                "                    </span>\n" +
                "                </a>"
        if($("#content").is(":hidden")){
            $("#content1").hide();
            $("#footer").hide();
            $("#content").show();

            headContent="<a href=\"#\" onClick=\"goBcak()\" class=\"ui-btn-left ui-btn ui-btn-up-b ui-shadow ui-btn-corner-all ui-btn-icon-left\"  data-icon=\"arrow-l\" data-theme=\"b\" data-corners=\"true\" data-shadow=\"true\" data-iconshadow=\"true\" data-wrapperels=\"span\">\n" +
                    "          <span class=\"ui-btn-inner ui-btn-corner-all\">\n" +
                    "            <span class=\"ui-btn-text\">返回</span>\n" +
                    "            <span class=\"ui-icon ui-icon-arrow-l ui-icon-shadow\"></span>\n" +
                    "          </span>\n" +
                    "        </a>\n" +
                    "        <h1 class=\"ui-title\" role=\"heading\" aria-level=\"1\">选择部门</h1>\n" +
                    "               <a href=\"#\" onClick=\"sub()\" data-icon=\"home\" data-theme=\"b\" data-ajax=\"false\" data-corners=\"true\" data-shadow=\"true\" data-iconshadow=\"true\" data-wrapperels=\"span\" class=\"ui-btn-right ui-btn ui-btn-up-b ui-shadow ui-btn-corner-all ui-btn-icon-left\">\n" +
                    "                    <span class=\"ui-btn-inner ui-btn-corner-all\">\n" +
                    "                        <span class=\"ui-btn-text\">\n" +
                    "                            <span class=\"ui-btn-text\">确定</span>\n" +
                    "                        </span>\n" +
                    "                        <span class=\"ui-icon ui-icon-home ui-icon-shadow\">&nbsp;</span>\n" +
                    "                    </span>\n" +
                    "                </a>"
        }else{
            $("#content1").show();
            $("#footer").show();
            $("#content").hide();
        }
        $("#heder").html(headContent)
    }

    var depSetting =
            {
                data:
                        {
                            simpleData:
                                    {
                                        enable: true
                                    }
                        },
                check:
                        {
                            enable:true,
                            chkStyle:'checkbox'
                        }
            };
    var treeObj;
    var treeNodes;
    var choMap=new Map();
    $(function () {
        $.ajax({
            type: "POST",
            dataType: "json",
            url: '',
            success: function (data) {
                zTreeObj = $.fn.zTree.init($("#depTree"), depSetting, data);
                var nodes=zTreeObj.getNodes();
                changeContent(nodes)
                treeObj=$.fn.zTree.getZTreeObj("depTree");
                treeNodes = treeObj.transformToArray(treeObj.getNodes());
            }
        });

    });

    /*点击复选框*/
    function chooseDep(obj){
        var node = treeObj.getNodeByParam("id", $(obj).val(), null);
        if ($(obj).is(':checked')){
            treeObj.checkNode(node,true,true,false);
            $(obj).attr("class","selected");
        }else{
            treeObj.checkNode(node,false,true,false);
            $(obj).attr("class","unselected");
        }
        for (var i = 0; i < treeNodes.length; i++){
            if(treeNodes[i].checked){
                if(treeNodes[i].level == "1"){
                    if(!choMap.containsKey(treeNodes[i].id)){
                        choMap.put(treeNodes[i].id,treeNodes[i].name);
                    }
                }
            }else{
                if(choMap.containsKey(treeNodes[i].id)){
                    choMap.remove(treeNodes[i].id);
                }
            }
        }
    }

    /*点击部门,要去到下一层级*/
    function childs(id){
        var nodes = treeObj.getNodesByParam("pId", id, null);
        changeContent(nodes)
    }

    /*改变显示的部门内容*/
    function changeContent(nodes) {
        var content="";
        if (nodes.length!=0){
            for (var i = 0;i < nodes.length; i++){
                if ((nodes[i].checked&&choMap.containsKey(nodes[i].id))||(nodes[i].checked&&nodes[i].check_Child_State==2)){
                    content+="<div class='out-border'><input class='selected' style='-webkit-appearance: none' type='checkbox' value='"+nodes[i].id+"' onclick='chooseDep(this)'><div class='dep' onclick=childs('"+nodes[i].id+"')>"+nodes[i].name+"</div></div>";
                }else if (nodes[i].check_Child_State==1) {
                    content+="<div class='out-border'><input class='childSelected' style='-webkit-appearance: none' type='checkbox' value='"+nodes[i].id+"' onclick='chooseDep(this)'><div class='dep' onclick=childs('"+nodes[i].id+"')>"+nodes[i].name+"</div></div>";
                }else {
                    content+="<div class='out-border'><input class='unselected' style='-webkit-appearance: none' type='checkbox' value='"+nodes[i].id+"' onclick='chooseDep(this)'><div class='dep' onclick=childs('"+nodes[i].id+"')>"+nodes[i].name+"</div></div>";
                }
            }
            $("#content").html(content)
            $("#content").trigger("create");
        }
    }

    /*点击确定*/
    function sub() {
        var depId="";
        var depName="";
        for ( var i = 0; i <choMap.size(); i++){
            depName+=choMap.element(i).value+",";
            depId+=choMap.element(i).key+",";
        }
        if (depName!=""&&depName.length>0) {
            depName=depName.substring(0,depName.length-1);
        }
        if(depName==""||depName.length<=0){
        	depName="点击选择";
        }
        $("#showDepName").text(depName);
        $("#depsId").val(depId);
        var nodes = treeObj.getNodesByParam("pId", null, null);
        changeContent(nodes)
        showTree();
    }

    /*返回上一级*/
    function goBcak() {
        var nodes = treeObj.getNodesByParam("pId", null, null);
        changeContent(nodes)
    }
</script>

猜你喜欢

转载自blog.csdn.net/qq_20594019/article/details/97260231
今日推荐