!function ($) { "use strict"; // jshint ;_; var _render = function(obj, p){ var parent = $(p); var ic = 0; var count = 0 ; for (var key in obj) { if (!obj.hasOwnProperty(key)){ continue; } count+=1; } for (var key in obj) { if (!obj.hasOwnProperty(key)){ continue; } ic +=1; var coma = ''; if (ic < count){ coma = ','; } if (obj[key] === null){ parent.append('
  • '+key+': null '+coma+'
  • '); } else if (typeof obj[key] === 'boolean'){ parent.append('
  • '+key+':'+obj[key]+''+coma+'
  • '); } else if (typeof obj[key] === 'number'){ parent.append('
  • '+key+':'+obj[key]+''+coma+'
  • '); } else if (typeof obj[key] === 'string'){ parent.append('
  • '+key+':"'+obj[key]+'"'+coma+'
  • '); } else if ($.isArray(obj[key])) { var arval = $('
  • '+key+':[]'+coma+'
  • '); parent.append(arval); arval.find('.unfold').data('card', _render(obj[key], arval.find('.array'))) ; }else{ var oval = $('
  • '+key+':{}'+coma+'
  • '); parent.append(oval); oval.find('.unfold').data('card', _render(obj[key], oval.find('.object'))); } } return ic; }; $(document).on("click", '.jsontree .fold', function(e){ e.preventDefault(); $(this).addClass('folded').parent().find('ul').slideUp(); }); $(document).on('click', '.jsontree .fold.folded', function(e){ e.preventDefault(); $(this).removeClass('folded').parent().find('ul').slideDown(); }); var JsonTree = function(self){ var j = $.parseJSON(self.data('jsontree')); self.append(''); _render([j], self.find('.jsontree')); }; $.fn.jsontree = function (option) { return this.each(function () { var self = $(this), data = self.data('jsontree'); if (!data) { if (typeof option == 'string') { data = option; self.data('jsontree', option); }else{ data = {}; self.data('jsontree', ''); } } new JsonTree(self); }); }; }(window.jQuery);