javascript - jsTree 复选框 check_node 不工作

标签 javascript jquery jstree

jstree v1.0

我刚刚对复选框示例进行了修改:http://www.jstree.com/documentation/checkbox

我的目标: 检查任何节点时,我希望检查所有父节点(默认行为不正确,因为这是部分选择的东西,对我不利)

根据提示和文档,我扩展了原始示例,但我发现 check_node 方法不起作用。我没有注意到任何影响。

欢迎任何提示或建议。

<div id="demo1" class="demo">
    <ul>
        <li id="phtml_1">
            <a href="#">Root node 1</a>
            <ul>
                <li id="phtml_2" >
                    <a href="#">Child node 1</a>
                </li>
                <li id="phtml_3">
                    <a href="#">A Child node 2</a>
                </li>
            </ul>
        </li>
        <li id="phtml_4">
            <a href="#">Root node 2</a>
        </li>
        <li id="phtml_5">
            <a href="#">Root node 1</a>
            <ul>
                <li id="phtml_51">
                    <a href="#">Child node 1</a>
                </li>
                <li id="phtml_52">
                    <a href="#">A Child node 2</a>
                </li>
            </ul>
        </li>
        <li id="phtml_6">
            <a href="#">Root node 1</a>
            <ul>
                <li id="phtml_61">
                    <a href="#">Child node 1</a>
                </li>
                <li id="phtml_62">
                    <a href="#">A Child node 2</a>
                </li>
            </ul>
        </li>
    </ul>
</div>
<script type="text/javascript" class="source">
$(function () {
    var x = $("#demo1");
    $(x).jstree({
        "checkbox" :{
            real_checkboxes:false,
            override_ui:true,
            two_state:false,    
        },
        "plugins" : [ "themes", "html_data", "checkbox", "ui" ]
    }).bind('check_node.jstree', function (e, data) { 
        console.log('check_node.jstree ----------------------------------------------');
        console.log(e);
        var all_selected = $(x).jstree('get_checked')
        console.log('all_selected='+all_selected);
        for(var i=0;i<all_selected.length;i++){
            var paths = $(x).jstree('get_path', all_selected[i], true);
            console.log('  paths='+paths);
            for(var j=0; j< paths.length;j++){
                console.log('    checking node (not working)='+paths[j]);
                $(x).jstree('check_node',paths[j]);
            }
        }
    });
    console.log('programaticcaly checking last parent node (not working)')
    //$(x).jstree('check_node',$('li#phtml_6'));
    $.jstree._reference("#demo1").check_node('li#phtml_6');
});
</script>

最佳答案

以下代码对我有用...

var contact_list = $('#compose_contact_list');

    contact_list.jstree({
        "checkbox" : {
            "keep_selected_style" : false,
            "tie_selection" : false
        },
        "plugins" : [ "checkbox" ]
    });

    contact_list.on("check_node.jstree", function(event, data){
        alert(data.node.text);
    });

关于javascript - jsTree 复选框 check_node 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15363367/

相关文章:

javascript - 当元素不存在时使用 .on() 的 Jquery 在 ios7 上不起作用

mysql - jsTree 集成 Mysql 模式

javascript - 如何监听jsTree取消选择事件?

javascript - 使用 Javascript 和 CSS 移动 SVG 对象

JavaScript 挑战 : While Loops - Conditional Expression

javascript - 如何添加一个在 YouTube 视频播放完毕后执行的函数?

javascript - .aspx 的正则表达式?修改查询字符串

javascript - 隐藏行的表排序问题

jquery - 在动态 iframe 中注入(inject)表单时 IE 中的混合内容问题

javascript - 如何在 select_node 事件上为 jstree 添加元数据