2016-06-27 6 views
3

Ниже приводится моя JSON данные проверяются с помощью JSONLint:Добавление HTML элементов в данных JSON

[{ 
"text": "Products", 
"data": {}, 
"children": [{ 
    "text": "Fruit", 
    "data": { 
     "price": "", 
     "quantity": "", 
     "AddItem": "+", 
     "RemoveItem": "&#215" 
    }, 
    "children": [{ 
     "text": "Apple", 
     "data": { 
      "price": 0.1, 
      "quantity": 20, 
      "AddItem": "+", 
      "RemoveItem": "&#215" 
     } 
    }, { 
     "text": "Strawberry", 
     "data": { 
      "price": 0.15, 
      "quantity": 32, 
      "AddItem": "+", 
      "RemoveItem": "& #215" 
     } 
    }], 
    "state": { 
     "opened": false 
    } 
}, { 
    "text": "Vegetables", 
    "data": { 
     "price": "", 
     "quantity": "", 
     "AddItem": "&# 43;", 
     "RemoveItem": "&#215" 
    }, 
    "children": [{ 
     "text": "Aubergine", 
     "data": { 
      "price": 0.5, 
      "quantity": 8, 
      "AddItem": "+", 
      "RemoveItem": "&#215" 
     } 
    }, { 
     "text": "Cauliflower", 
     "data": { 
      "price": 0.45, 
      "quantity": 18, 
      "AddItem": "+", 
      "RemoveItem": "&#215" 
     } 
    }, { 
     "text": "Potato", 
     "data": { 
      "price": 0.2, 
      "quantity": 38, 
      "AddItem": "+", 
      "RemoveItem": "&#215" 
     } 
    }] 
}], 
"state": { 
    "opened": false 
} 
}] 

То, что я ищу, чтобы преобразовать значение для ключей AddItem и RemoveItem к HTML кнопки.

Вышеупомянутый JSON будет использоваться для визуализации узлов в jsTree plugin.

jsFiddle ссылка, где я буду использовать данные json. В принципе, я хочу, чтобы заменить мой + и - знак с кнопкой для того же

ли кто-нибудь имеет работу вокруг этого?

Edit 1: Я прочитал в нескольких местах, что добавление HTML-элементов непосредственно в данных JSON не рекомендуется, поскольку он может быть использован в нескольких местах в вашем коде, и каждый раз, когда он может иметь различный HTML для этого. Если у кого-то есть лучший способ сделать это, это будет здорово.

+0

[Это может быть полезным, если он использует правильные щелчки вместо кнопок.] (Http://stackoverflow.com/questions/31715584/jstree-delete-node-is-not-deleting) Я думаю, что если вы каким-то образом можете добавить атрибут класса или что-то еще, вы можете использовать событие onClick jQuery. – meepzh

+0

Что вы хотите добавить, когда нажата кнопка добавления только элемент или папка, и то же самое для кнопки удаления? –

+0

Я бы добавил дочерний узел ** onclick ** кнопки добавления и удалил «родительский узел со всеми дочерними узлами» или «on; y дочерний узел» или «только родительский узел» ** onclick ** удаления кнопка. –

ответ

2

Я никогда не использовал плагин jsTree, и, вероятно, лучший способ решить вашу проблему, но это, похоже, делает то, что я думаю, что вы ищете. Просто добавьте это в конец своего кода.

$(document).on('click','.jstree-table-wrapper', function() {//insted of document i would used jtrees containing div 
    $.each($('.jstree-table-cell span'),function(){ 
     if($(this).html()=='+'){  
      $(this).html('<button class="addBtn">+</button>') 
     }else if($(this).html()=='×'){  
      $(this).html('<button class="removeBtn">x</button>') 
     } 
    }); 
}); 

$(document).on('click','.addBtn',function(){//insted of document i would used jtrees containing div 
    var id = 'j1_'+$(this).parent().parent().attr('id').split('_')[2]; 
    demo_create(id); 
    $('.jstree-table-wrapper').trigger('click'); 
}); 

$(document).on('click','.removeBtn',function(){//insted of document i would used jtrees containing div 
    var id = 'j1_'+$(this).parent().parent().attr('id').split('_')[2]; 
    demo_delete(id);//you might need to work on your delete function 
    $('.jstree-table-wrapper').trigger('click'); 
}); 
+0

Ваше решение работает абсолютно нормально, а также без необходимости включать HTML в JSON. Тем не менее, я хотел бы знать лучшее решение, о котором вы говорите, а также –

+1

Я просто предположил, что, возможно, есть функция jsTree, которая поможет делать то, что вы просите. Не то, чтобы с моим решением было что-то не так. –

+0

Хорошо. Спасибо за эту замечательную работу. Могу ли я заменить кнопки значками, а затем отметить событие для этих значков? –