为jqtree中的选择节点和删除图标生成不同的事件

时间:2017-05-02 06:33:51

标签: javascript jquery jqtree

以下是我的代码:

var nodeData = ${jsonArray}; // my json data
$('#tree1')
            .tree(
                    {
                        data : nodeData,
                        autoOpen : 1,
                        onCreateLi : function(node, $li) {                              
                            $li
                                    .find('.jqtree-element')
                                    .append(
                                            '<a href="javascript:void(0);" class="delete" data-node-id="Test"><i class="ico ico-tool-delete"></i></a>');
                        }
                    });

    $('#tree1').bind('tree.click', function(event) {
        if (event.node) {               
            var node = event.node;
            alert("edit");

        }
        $tree.on('click', '.Test', function(e) {
            alert("delete");
        });
    });

我想在点击节点并删除图标时生成不同的事件。

目前,当我点击节点并删除图标时,都会生成相同的事件。

帮助我,上面代码中需要进行哪些更改。

感谢

1 个答案:

答案 0 :(得分:0)

首先,您尝试使用class测试选择元素,但此类不存在。

此外,删除图标位于li个节点元素内,这就是您触发相同事件的原因。

尝试附加删除a元素,如下所示:

$('#tree1').tree({
     data : nodeData,
     autoOpen : 1,
     onCreateLi : function(node, $li) {   
          $li.append(
              '<a href="#" class="delete" data-node-id="Test"><i class="ico ico-tool-delete">Delete</i></a>');
          }
     });

检查fiddle

编辑:

您可以在追加删除元素时将节点ID另存为数据attribute。 然后,当您单击特定的删除元素时,请按ID获取所需的节点:

var node = $tree.tree('getNodeById', $(this).data('parent-id'));

然后删除此项目:

$tree.tree('removeNode', node);

new fiddle