如何在jstree JSON数据中获取data-id

时间:2018-11-16 13:56:32

标签: jquery jstree

我正在尝试从由JsTree(复选框形式)生成的树形式中获取data-id,但是它不起作用。我正在使用$.each(),因为您可以选中更多复选框。这是我的脚本的样子:

$(document).ready(function() {
    $(".js-save-button").on('click', function(){
        let boxes = check_checkboxes();
        alert(JSON.stringify(boxes));

    });

    function check_checkboxes(){
        let boxes_id = [];
        let boxes = $(".js-categories-checkboxtree").jstree("get_checked", true);
        $.each(boxes, function() {
            //let id = jQuery(this); //getting info
            //let id = (data.node.id); //not working
            let id = $(this).data('id'); //not working
            boxes_id.push(id);
        }); 
        return boxes_id;
    }
});

我可以简单地得到它(但是它不会返回我需要的东西,我只能验证我在this中是否有正确的元素):

let id = $(this).attr('id');

但是我无法得到它(它返回null)

let id = $(this).data('id');

我试图提醒我有关该元素的所有知识:

let id = jQuery(this)

我可以看到有很多数据属性,但是我什么也听不到...有什么想法吗?

1 个答案:

答案 0 :(得分:0)

所以我终于找到了解决方法!其实很简单!您必须使用data访问这些.map()

赞:

$(".js-save-product").on('click', function(){
    let boxes = check_checkboxes();
    alert(JSON.stringify(boxes));

});

function check_checkboxes(){
    let boxes_id = [];
    let boxes = $('.js-categories-checkboxtree').jstree('get_checked', true)
    $.each(boxes, function() {
        let id = $(this).map(function() { return this.data.id }).get().join();
        boxes_id.push(id);
    }); 
    return boxes_id;
}