私は次のコードを持っています:
$('.wpFolders.co_files').bind('select_node.jstree', function (event, data) {
getFileById(data.args[0].hash.replace('#', ''));
}).jstree({
'plugins' : ['html_data','themes','ui','types'],
'ui' : {
'select_limit' : 1
},
'core' : {
'animation' : 0
},
'types': {
'default' : {
'icon' : {
'image' : '/admin/views/images/file.png'
}
}
}
});
ファイルのリストとして表示したい基本的な順序なしリストがあります。私はアイコンを変更するために「タイプ」を使用しようとしていますが、私はそれを行う方法を理解することはできません。私は彼らのドキュメントをチェックしました link そしてほとんど同一のコードを使用しても何も起こらないようです。
上記のコードを理解すると、ツリーのデフォルトタイプには指定したアイコンが表示されますが、何も起こりません。デフォルトのフォルダーアイコンだけが表示されます。
何か案は?質問が基本的なように思えても申し訳ありませんが、基本的なことをしようとすると、ドキュメントを理解するのが難しいと思います。 :)
2つの問題:
型を宣言する配列の1つのレベルを忘れました。コードは次のようにする必要がありました。
$('.wpFolders.co_files').bind('select_node.jstree', function (event, data) {
getFileById(data.args[0].hash.replace('#', ''));
}).jstree({
'plugins' : ['html_data','themes','ui','types'],
'ui' : {
'select_limit' : 1
},
'core' : {
'animation' : 0
},
'types': {
'types' : {
'file' : {
'icon' : {
'image' : '/admin/views/images/file.png'
}
},
'default' : {
'icon' : {
'image' : '/admin/views/images/file.png'
},
'valid_children' : 'default'
}
}
}
});
私のコードがWYSIWYGで壊れている理由が本当にわかりませんが、ifい場合は申し訳ありません。とにかく、これが誰かを助けることを願っています。
Typesプラグインを使用せずに、次のCSSを使用していくつかのアイコンを置き換えることができました。これが他の人にも役立つことを願っています!
/* replace folder icons with another image, remove leaf image */
li.jstree-open > a .jstree-icon {background:url("imageOpen.gif") 0px 0px no-repeat !important;}
li.jstree-closed > a .jstree-icon {background:url("imageClosed.gif") 0px 0px no-repeat !important;}
li.jstree-leaf > a .jstree-icon { display: none; }
/* replace checkbox icons */
li.jstree-unchecked > a .jstree-checkbox, li.jstree-undetermined > a .jstree-checkbox
{
background:url("uncheckedImage.png") 0px 0px no-repeat !important;
width: 32px;
height: 29px;
padding-top: 5px;
}
li.jstree-checked > a .jstree-checkbox
{
background:url("checkedImage.png") 0px 0px no-repeat !important;
width: 32px;
height: 29px;
padding-top: 5px;
}
頭痛の後に...私は解決策を見つけました。
<li data-jstree = '{"icon": "path/file.png"}'> </ li>
do n't cssコードを変更することをお勧めします。
PS「タイプ」プラグインは必要ありません。
HTML、CSS、またはプラグインなしで、新しいAPIでアイコンを変更できます。
$("#tree").jstree(true).set_icon(nodeId, "/images/blabla.png");
フォルダアイコンを非表示にするには、次を使用します。
<style type="text/css">
.jstree li > a > .jstree-icon { display:none !important; }
</style>
jstreeには(デフォルトのフォルダーアイコンに加えて)独自のファイルアイコンが含まれており、'icon': 'jstree-file'
表示するノードのプロパティ
レベルに基づいてアイコンを変更する方法:
jQuery('#tree-edit').on('changed.jstree', function(e, data) {
//do something
}).on("open_node.jstree", function(event, data) {
jQuery.each(data.instance._model.data, function(key, val) {
console.log(key + ", " + val);
if (key.length < 4 || key=='#') {
jQuery.jstree.reference("#tree-edit").set_type(val, "selectable");
}
});
}).on("loaded_node.jstree", function(event, data) {
console.log(data);
}).jstree({
'plugins': ["search", "types"],
'core': {
'data': {
'url': 'http://www.google.com/json',
'data': function(node) {
return {'id': node.id};
}
}
},
'types': {
'selectable': {
'icon': 'http://elpidio.tools4software.com/images/icon-ok-small.png'
},
'default': {
'icon': 'http://www.fabulatech.com/printer-for-remote-desktop-server-help/img/icons/warning-small.gif'
}
},
});
非常に多くの構成を試みて失敗した後、私は素晴らしいアイデアを見つけました!
オンラインフォトエディターを使用して https://pixlr.com/editor/ パスの下にアイコンイメージファイルを開きました。
jstree\themes\default\32px.png
そして、置き換えたいフォルダアイコンを開きました
簡単に交換して保存してください:) 2時間の闘争の後、最高だと思います。
次のスクリプトは私のために機能します:
$('div#jstree').on('ready.jstree click', function (e, data) {
$('i.jstree-icon').removeClass('jstree-themeicon jstree-icon').addClass('fa fa-lg fa-user');
});
このコードを試してください:
lst_item = [];
$('#city_tree li').each(function(){ lst_item.Push($(this).attr('id')); });
$('#city_tree').jstree(true).set_icon(lst_item, "/static/global/plugins/jstree/province.png");