เปลี่ยนไอคอนเมื่อคลิก jstree

ฉันมีรหัสนี้โดยใช้ปลั๊กอิน jstree

$(".gems-tree").on('changed.jstree' , function( event , data ){
  console.log("folder clicked");
});

และใช้งานได้ แต่ตอนนี้ฉันต้องการเปลี่ยนไอคอนจากโฟลเดอร์เป็นปิดเพื่อเปิด มีวิธีใดที่จะทำให้สำเร็จหรือไม่

หมายเหตุ

ลองใช้ data.node.state.opened = true แล้วเพื่อดูว่าไอคอนโฟลเดอร์เปลี่ยนไปหรือไม่


person carloss medranoo    schedule 23.05.2015    source แหล่งที่มา


คำตอบ (2)


หากคุณต้องการเปลี่ยนไอคอนของแต่ละโหนดที่เลือก คำตอบของ Adnan Y จะทำงาน (เพียงตรวจสอบให้แน่ใจว่า data.action เป็น "select_node"):

$("#jstree2").on('changed.jstree', function(evt, data) {
  if(data.action === "select_node") {
    data.instance.set_icon(data.node, 'http://jstree.com/tree-icon.png');
  }
});

หากคุณต้องการตอบสนองต่อการเปิดและปิดโหนด ให้ใช้โค้ดที่คล้ายกัน:

$("#jstree2")
  .on('open_node.jstree', function(evt, data) {
    data.instance.set_icon(data.node, 'http://jstree.com/tree-icon.png');
  })
  .on('close_node.jstree', function(evt, data) {
    data.instance.set_icon(data.node, true);
  });

ในตัวอย่างที่สอง ไอคอนถูกตั้งค่าเป็น true ซึ่งจะคืนค่าเป็นไอคอนเริ่มต้น (หากนี่คือสิ่งที่คุณต้องการ)

person vakata    schedule 23.05.2015

ซึ่งสามารถทำได้โดยใช้ปลั๊กอิน jstree's types

ต่อไปนี้เป็นตัวอย่าง โดยใช้ font-awesome สำหรับไอคอนโฟลเดอร์

<div id="jstree_menu"></div>
<script>
/* Load menu tree data */
$('#jstree_menu').jstree(
    {
        'core' : {
            'data' : {
                'url' : '/jstree-menu-data/index.html',
            }
        },
        'plugins' : [ "types" ],
        'types' : {
            'default' : {
                'icon' : 'fa fa-angle-right fa-fw'
            },
            'f-open' : {
                'icon' : 'fa fa-folder-open fa-fw'
            },
            'f-closed' : {
                'icon' : 'fa fa-folder fa-fw'
            }
        }
    }
);

/* Toggle between folder open and folder closed */
$("#jstree_menu").on('open_node.jstree', function (event, data) {
    data.instance.set_type(data.node,'f-open');
});
$("#jstree_menu").on('close_node.jstree', function (event, data) {
    data.instance.set_type(data.node,'f-closed');
});
</script>
person Li-aung Yip    schedule 12.08.2016