Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jsTree addClass是';有时我记不起来了_Javascript_Jquery_Jstree_Jstree Dnd - Fatal编程技术网

Javascript jsTree addClass是';有时我记不起来了

Javascript jsTree addClass是';有时我记不起来了,javascript,jquery,jstree,jstree-dnd,Javascript,Jquery,Jstree,Jstree Dnd,使用jsTree和拖放插件,我试图说明节点的位置何时发生了变化。 使用move\u node.jstree事件,我向被移动的节点添加了一个isChanged类,这很好。但是,如果我移动的节点是已经移动的节点的同级节点,则先前移动的项的ischange类将被剥离 有没有办法在所有移动的节点上保留isChanged类 (移动同一分支上的节点;只有一个具有ischange类) 以下是完整性代码: $('#treeView').jstree({ "core": {

使用jsTree和拖放插件,我试图说明节点的位置何时发生了变化。 使用
move\u node.jstree
事件,我向被移动的节点添加了一个
isChanged
类,这很好。但是,如果我移动的节点是已经移动的节点的同级节点,则先前移动的项的
ischange
类将被剥离

有没有办法在所有移动的节点上保留
isChanged

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

以下是完整性代码:

$('#treeView').jstree({
    "core": {
        "check_callback": true
    },
    "plugins": ["dnd"]
})
.on('move_node.jstree', function (e, data) {
    
    $("#" + data.node.a_attr.id).addClass("isChanged");
    
    console.log(data.node.a_attr.id);
    
});

为了持久化该类,还需要将其添加到节点的内部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);
});

谢谢@vakata,但是我得到了以下错误,因为
class
不是
li_attr
的属性?无法读取undefined的属性'indexOf'。在这个版本的小提琴中可以看到错误:我刚刚编辑了我的答案-很抱歉忽略了检查。我也没有看到您试图更新锚元素上的类,而不是列表项1。以下是更新的小提琴: