doulv8162 2016-08-28 08:19
浏览 58
已采纳

JQuery Library调用JSTree用于生成嵌套CheckBoxes

I try to use in Wordpress but it shows jstree is not a function in console At Header PHP File :

<script src="<?php echo esc_url( get_template_directory_uri() ); ?>/dist/libs/jquery.js"></script>
<link rel="stylesheet" href="<?php echo esc_url( get_template_directory_uri() ); ?>/dist/themes/default/style.min.css" />
<script src="<?php echo esc_url( get_template_directory_uri() ); ?>/dist/jstree.min.js"></script>

Inside PHP Page File :

        jQuery(document).ready(function(){
        var JSONArray = JSON.parse( '<?php echo json_encode($items); ?>' );
        var cats = JSONArray;
        var myarray = [];
        if (cats.length > 0){
            for ( var i = 0 ; i < cats.length; i++)
            {
                if (cats[i].parent == 0) {
                    cats[i].parent = '#';
                }
                myarray.push(cats[i]);
            }
            console.log('jstreetag , myarray length : ' + myarray.length);
            jQuery('#dcategories').on('changed.jstree', function (e, data) {
                    jQuery('#postCat').val(data.instance.get_node(data.selected[0]).id);
                    jQuery('#lpostCat').html(data.instance.get_node(data.selected[0]).text);
                })
                .on('loaded.jstree', treeLoaded)
                .jstree({
                    //'core' : { 'data' : myarray,"multiple" : false }
                    "core" : {
                            "data" : myarray,"multiple" : false,
                            "themes" : {
                            "variant" : "large"
                                   }
                         },
                    "checkbox" : {
                            "keep_selected_style" : false,
                            "two_state" : true
                             },
                    "plugins" : [ "wholerow", "checkbox" ]
                })
                .bind("change_state.jstree", function(e, data){ 
                    if(data.inst.get_checked().length>1){ 
                        data.inst.uncheck_node(data.rslt[0]); 
                    } 
                })
                .on('select_node.jstree', function (e, data) {
                    if (data.node.children.length > 0) {
                        jQuery('#dcategories').jstree(true).deselect_node(data.node);
                        jQuery('#dcategories').jstree(true).toggle_node(data.node);
                    }
                }) ;
        }
    });
    function treeLoaded(event, data) {
        data.instance.select_node(['<?php echo $catid; ?>']); //node ids that you want to check
    }

Also The Same Code Works on Other website, not this one

error on browser console shows jstree is not a function

  • 写回答

1条回答 默认 最新

  • douyinbo3361 2016-08-29 05:56
    关注
    1. jstree.min.js Not loaded before call function
    2. Conflict Happened

    try to use :

    var noCfl = jQuery.noConflict();
    

    and use :

    noCfl(document).ready
    

    Instead of :

    jQuery(document).ready
    

    Call :

    <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/jstree/3.0.9/themes/default/style.min.css" />
    <script src="//cdnjs.cloudflare.com/ajax/libs/jstree/3.0.9/jstree.min.js"></script>
    

    At Header

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器