2017-06-16 189 views
1

我正在創建一個按鈕來刪除節點後,我選擇了它們。我想讓它只能刪除子節點。爲了做到這一點,我需要檢查節點是否是父節點。我點擊一個按鈕後,如何檢查節點是否是jstree中的父節點?

所以代碼會看起來像

$(".delete-node").click(function() { 
    // gets the selected nodes 
    $('#jstree1').jstree(true).get_selected(); 

    if (data.instance.is_leaf) { 
     //My problem is HERE. Only delete if all nodes are children/not parent 
     //here I delete the nodes selected 
     $('#jstree1').jstree(true) 
        .delete_node($('#jstree1') 
        .jstree(true) 
        .get_selected()); 
    } 
});   

我知道這很簡單,但我似乎不能把它工作。我有點新的jQuery和JavaScript,所以我錯過了什麼?

回答

1

您需要通過id獲取節點,然後檢查它是否爲父節點。看下面的代碼。檢查演示 - Codepen Demo

$('#jstree1') 
    .jstree({ 
    core: { 
     data: treeData, 
     check_callback: true // don't forget to set this param to true 
    } 
    }); 

$(".delete-node").click(function() { 
    var tree = $('#jstree1').jstree(); 
    // gets the selected nodes 
    var selectedNodeIds = tree.get_selected(); 
    selectedNodeIds.forEach(function(nodeId) { 
    var node = tree.get_node(nodeId); 
    if (!tree.is_parent(node)) { 
     tree.delete_node(node) 
    } 
    }); 
}); 
+0

這正是我所問的。有用! – PlotTwist

+0

很高興幫助! –

0

你可以做$(element).children().length === 0這意味着它沒有任何子節點。

要在這種情況下刪除所有子節點$(element).children().remove()將刪除所有子節點。

+0

剛剛嘗試過,但我仍然失去了一些東西。我的代碼看起來像:if($('。jstree-clicked')。children()。length === 0){ alert('haha'); } – PlotTwist

+0

您能否突出顯示您感覺缺失的狀況?我可以從那裏獲得幫助 – gauravmuk

+0

警報不會彈出,意味着條件不成立。但爲什麼不呢?我的意思是,我選擇節點,我點擊按鈕,如果點擊的節點 - .jstree點擊 - 沒有孩子,它應該發出警報,但沒有任何反應。 – PlotTwist

相關問題