2

ノードの名前変更を選択したときに this.rename(obj) が定義されていないことを示す JavaScript エラー。

JavaScript ランタイム エラー: オブジェクトはプロパティまたはメソッド 'rename' をサポートしていません

$(document).ready(function () {
        $('#marketing-category-tree').jstree({
            themes: {
                theme: "default",
                dots: true,
                icons: true
            },
            contextmenu: {
                items: {
                    "rename" : {
                        "label": "Rename",
                        "action": function (obj) { this.rename(obj); }
                    }
                }
            },
            plugins: ["themes", "html_data", "ui", "crrm", "contextmenu"]
        })
        .bind("rename.jstree", function (e, data) {
            debugger;
            alert("RENAMING!!!");
        });
});

次のコードも試してみましたが、名前の変更を選択して実行できますが、変更イベントをキャプチャできません。

$('#marketing-category-tree').jstree({
    themes: {
        theme: "default",
        dots: true,
        icons: true
    },
    plugins: ["themes", "html_data", "ui", "crrm", "contextmenu"]
})
.bind("rename.jstree", function (e, data) {
    alert("RENAMING!!!");
});
4

3 に答える 3

3

あなたが探している方法はeditだと思います。ただし、最初にツリーのノードを取得する必要があります。以下のコードを使用してみてください。

...
"contextmenu" : {
  "items" : renameItem : { // The "rename" menu item
              label : "Rename",
              action : function (obj) {
              n = $('#marketing-category-tree').jstree(true).get_node(obj.reference); //get node
              $('#marketing-category-tree').jstree(true).edit(n); //puts the node into edit mode
              }
            }
  }
...

HTH

于 2014-09-15T13:56:30.447 に答える