Javascript 如何调用不同的事件选择并单击jstree(vakata)

Javascript 如何调用不同的事件选择并单击jstree(vakata),javascript,jquery,jstree,Javascript,Jquery,Jstree,在jstree中,我有两个用于选择和取消选择的函数,我希望它是一个用于单击的事件 $(function () { $('#tree_folder').on('deselect_node.jstree Event', function (e, data) { var item_id = data.node.id; setPermission(item_id, $role, 1); }); }); $(function () { $('#t

在jstree中,我有两个用于选择和取消选择的函数,我希望它是一个用于单击的事件

$(function () {
    $('#tree_folder').on('deselect_node.jstree Event', function (e, data) {
        var item_id = data.node.id;

        setPermission(item_id, $role, 1);
    });
});

$(function () {
    $('#tree_folder').on('select_node.jstree Event', function (e, data) {
        var item_id = data.node.id;

        setPermission(item_id, $role, 0);
    });
});
我使用这两个事件来选择和取消选择,但即使单击一个节点,它们也可以工作。当我单击一个节点(不是复选框)时,它会调用select或deselect事件,并添加或删除对节点的检查。
如何在不选择或取消选择的情况下为jstree上的click event编写函数?

在事件处理程序中,您可以检查单击的元素是否是您的复选框

在大div上有一个偶数侦听器,但仅当用户单击div中的li而不是div本身时才执行功能

在您的例子中,听起来您想检查e,看看它是否是复选框,然后才调用setPermission方法,否则什么都不做

JavaScript

function handler(event) {
    var target = $(event.target);
    if (target.is("li")) {
        target.children().toggle();
    } else {
        //alert('target is not li');
    }
}
$("div").click(handler).find("ul ul").hide();
HTML

<div style="padding:100px;background-color:wheat;">
    <ul>
        <li>item 1
            <ul>
                <li>sub item 1-a</li>
                <li>sub item 1-b</li>
            </ul>
        </li>
        <li>item 2
            <ul>
                <li>sub item 2-a</li>
                <li>sub item 2-b</li>
            </ul>
        </li>
    </ul>
</div>

  • 项目1
    • 分项目1-a
    • 分项目1-b
  • 项目2
    • 分项目2-a
    • 分项2-b