在某些情况下,不会记住jsTree addClass

时间:2015-05-05 10:17:50

标签: javascript jquery jstree jstree-dnd

使用jsTree和拖放插件,我试图说明节点的位置何时被更改。 使用<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataKeyNames="Id" DataSourceID="data"> <Fields> <asp:BoundField DataField="TicketNo2" HeaderText="Ticket No" SortExpression="TicketNo2" /> <asp:BoundField DataField="TicketNo" HeaderText="Ticket Serial" SortExpression="TicketNo" /> </Fields> </asp:DetailsView> 事件,我向移动的节点添加了一个move_node.jstree类,这样可以正常工作。但是,如果我移动的节点是已经移动的节点的兄弟节点,则先前移动的项目将剥离其isChanged类。

有没有办法可以在所有移动的节点上保留isChanged类?

Demo

(移动同一分支上的节点;只有一个拥有isChanged类的节点)

以下是完整性代码:

isChanged

1 个答案:

答案 0 :(得分:1)

为了保持该类,您还需要将其添加到节点的内部jsTree表示中,否则在重新绘制节点时该类将丢失。

.on('move_node.jstree', function (e, data) {
    $("#" + data.node.a_attr.id).addClass("isChanged");
    if(data.node.a_attr.class) {
      if(data.node.a_attr.class.indexOf('isChanged') === -1) {
        data.node.a_attr.class += ' isChanged';
      }
    }
    else {
      data.node.a_attr.class = 'isChanged';
    }   
    console.log(data.node.a_attr.id);
});