gpt4 book ai didi

jquery - JSTree select_node 事件触发两次

转载 作者:行者123 更新时间:2023-12-01 04:38:40 27 4
gpt4 key购买 nike

我创建了一个 select_node 事件。但是当我们选择一个节点时它会触发两次。在这里,您可以看到我在 select_node 事件上设置的更改,该事件触发了两次。

还在 JStree 初始化中我指定了一个检查事件。

    $('#div_vocabulary_tree').on('select_node.jstree', function (e, data) {
alert("Select Event");
});

这是我的 JStree 初始化代码

            $('#div_vocabulary_tree').jstree({
plugins: ["wholerow", "checkbox", "types", "search"],
"search": {

"case_insensitive": true

},
'checkbox': {
three_state: false, // to avoid that fact that checking a node also check others
whole_node: false, // to avoid checking the box just clicking the node
tie_selection: false // for checking without selecting and selecting without checking
},
'core': {
themes: {
responsive: !1
},
check_callback: false,
'data': arrayCollectiom,
types: {
"default": {
icon: "fa fa-folder icon-state-warning icon-lg"
},
file: {
icon: "fa fa-file icon-state-warning icon-lg"
}
}
}
}).on("check_node.jstree uncheck_node.jstree", function (e, data) {
//alert(data.node.parents);
//alert(data.node.parent);
//alert(data.node.id + ' ' + data.node.text + (data.node.state.checked ? ' CHECKED' : ' NOT CHECKED'))
})

更多信息当我深入研究时,我发现如果我们选择第一级(根)节点,它只会触发一个,如果是第二级,它会触发 2 次。如果在第三级,select_node 事件会触发 3 次。所以我猜与 level 和 select_node 事件有一些联系。那么我们如何解决这个问题,因为与 level 和 select 事件有关

最佳答案

当您选择根节点时,代码只会触发一次。当您选择子节点时,子节点仍然是根节点的一部分。因此,代码将为子节点触发一次,为根节点触发一次。

如果子节点的深度为 7 层,则该事件将触发七次。

如何在事件处理程序中处理它的一个示例是检查事件触发的目标是否是当前选择或单击的目标:

this._tree = this.$('.js-tree');

if(this._tree.get_node(evt.target) == this._tree.get_node(evt.currentTarget){
//Do event logic
} else {
//Do nothing
return;
}

关于jquery - JSTree select_node 事件触发两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44280082/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com