zTree / zTree_v3

jQuery Tree Plugin
MIT License
4.1k stars 1.28k forks source link

RemoveHoverDom will not trigger in Selected node #511

Closed cary-hu closed 2 years ago

cary-hu commented 2 years ago

Here is a reproduce sample:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/zTree.v3/3.5.42/css/zTreeStyle/zTreeStyle.min.css" integrity="sha512-W3T+ffBp2PURTmeY0dPZuakhOCElWnf2IJsDJnD/wUXkqrDedFvxxuDURSKU2KpDRym04aB3B9Esl+ti1lTBcg==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/zTree.v3/3.5.42/js/jquery.ztree.all.min.js"></script>
    <title>Document</title>
</head>
<body>
<div class="zTreeDemoBackground left">
        <ul id="treeDemo" class="ztree"></ul>
    </div>
    <SCRIPT type="text/javascript">
        var setting = {
    view: {
        addHoverDom: addHoverDom,
        removeHoverDom: removeHoverDom,
    },
            data: {
                simpleData: {
                    enable: true
                }
            }
        };
function addHoverDom(treeId, treeNode) {
var aObj = $("#" + treeNode.tId + "_a");
    if(document.querySelector("#diyBtn_space_" + treeNode.id)) {
    return;
  }
    var editStr = "<span id='diyBtn_space_" +treeNode.id+ "' > 123123123</span>";
    aObj.append(editStr);

};
function removeHoverDom(treeId, treeNode) {
    $("#diyBtn_space_" +treeNode.id).unbind().remove();
};
        var zNodes =[
            { id:1, pId:0, name:"父节点1 - 展开", open:true},
            { id:11, pId:1, name:"父节点11 - 折叠"},
            { id:111, pId:11, name:"叶子节点111"},
            { id:112, pId:11, name:"叶子节点112"},
            { id:113, pId:11, name:"叶子节点113"},
            { id:114, pId:11, name:"叶子节点114"},
            { id:12, pId:1, name:"父节点12 - 折叠"},
            { id:121, pId:12, name:"叶子节点121"},
            { id:122, pId:12, name:"叶子节点122"},
            { id:123, pId:12, name:"叶子节点123"},
            { id:124, pId:12, name:"叶子节点124"},
            { id:13, pId:1, name:"父节点13 - 没有子节点", isParent:true},
            { id:2, pId:0, name:"父节点2 - 折叠"},
            { id:21, pId:2, name:"父节点21 - 展开", open:true},
            { id:211, pId:21, name:"叶子节点211"},
            { id:212, pId:21, name:"叶子节点212"},
            { id:213, pId:21, name:"叶子节点213"},
            { id:214, pId:21, name:"叶子节点214"},
            { id:22, pId:2, name:"父节点22 - 折叠"},
            { id:221, pId:22, name:"叶子节点221"},
            { id:222, pId:22, name:"叶子节点222"},
            { id:223, pId:22, name:"叶子节点223"},
            { id:224, pId:22, name:"叶子节点224"},
            { id:23, pId:2, name:"父节点23 - 折叠"},
            { id:231, pId:23, name:"叶子节点231"},
            { id:232, pId:23, name:"叶子节点232"},
            { id:233, pId:23, name:"叶子节点233"},
            { id:234, pId:23, name:"叶子节点234"},
            { id:3, pId:0, name:"父节点3 - 没有子节点", isParent:true}
        ];

        $(document).ready(function(){
            $.fn.zTree.init($("#treeDemo"), setting, zNodes);
        });
    </SCRIPT>

</body>
</html>

Hover node, hovered node will add a span, dehover node will remove the span.

but if select one node, then dehover node, the span will not remove.

cary-hu commented 2 years ago

Looks like route cause here: https://github.com/zTree/zTree_v3/blob/dd003eb315545c233ec3ade51f882329abc33bea/js/jquery.ztree.all.js#L2947

but why?

zTree commented 2 years ago

please see: https://treejs.cn/v3/demo.php#_305

image

the addNode Button

cary-hu commented 2 years ago

So, It's zTree build-in behavior, and we do not have some configuration for it?

If I want show the extra icon JUST in hover event, but not show the icon in selected node, how should I got it?

zTree commented 2 years ago

you can use css. :hover control the 'display'

cary-hu commented 2 years ago

ok, I will take a try, thanks for your time.