Как получить data-id в Jstree JSON-данных - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь получить data-id из формы дерева, сгенерированной с помощью JsTree (форма-флажок), но она не работает. Я использую $.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');

Но я не могу получить это (возвращается ноль)

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

Я пытался предупредить все, что знаю об элементе:

let id = jQuery(this)

и я вижу, что существует множество атрибутов данных, но я не могу получить ни один из них ... Есть идеи, пожалуйста?

1 Ответ

0 голосов
/ 16 ноября 2018

Итак, я наконец нашел решение!Это на самом деле просто!Вы должны получить доступ к этим 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;
}
...