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

时间:2014-09-12 13:13:42

标签: 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 () {
    $('#tree_folder').on('select_node.jstree Event', function (e, data) {
        var item_id = data.node.id;

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

我使用这两个事件进行选择和取消选择,但这些事件甚至可以点击一个节点。当我单击一个节点(而不是一个复选框)时,它会调用select或取消选择event并添加或删除check to node。 如何在不选择或取消选择的情况下为jstree上的click事件编写函数?

1 个答案:

答案 0 :(得分:0)

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

This fiddle在一个大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>