javascript - 称为 JSTree 的 JQuery 库用于制作嵌套的复选框

标签 javascript php jquery wordpress jstree

我尝试在 Wordpress 中使用,但它在控制台中显示 jstree 不是函数 在 header PHP 文件中:

<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>

内部 PHP 页面文件:

        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
    }

同样的代码也适用于其他网站,而不是这个网站

浏览器控制台上的错误显示 jstree 不是一个函数

最佳答案

  1. jstree.min.js 调用函数前未加载
  2. 冲突发生

尝试使用:

var noCfl = jQuery.noConflict();

并使用:

noCfl(document).ready

代替:

jQuery(document).ready

调用:

<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>

在标题处

关于javascript - 称为 JSTree 的 JQuery 库用于制作嵌套的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39189301/

相关文章:

javascript - 删除发生在打开模式之前并确认删除

javascript - 使用 javascript(无库)更新 tbody 的 html : possible?

javascript - 将对象键/值对拆分为单独的对象

php - 谁能解释一下下面的 PHP 代码?

php - 为了解决 ajax 'same origin policy' 问题,需要编写 PHP ajax 请求转发器的代码吗?

php - header ("Expires: 0") 是做什么的?

jquery - 通过不同的功能保持计数一致

javascript - AJAX 未成功从 asp.net 服务器返回

javascript原型(prototype)继承覆盖属性

javascript - 无法使用 electronjs 和 jquery 显示 OpenDialog