Нужна помощь в рекурсивной итерации по всем уровням объекта Javascript

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

$(document).ready(function(){
  //Particular Parent chield click
  $(".buttons").on("click","button",function(){
    alert("Clicked");
  });  
  
  //Dynamic event bind on button class  
  $(document).on("click",".button",function(){
    alert("Dymamic Clicked");
  });
  $("input").addClass("button");  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="buttons">
  <input type="button" value="1">
  <button>2</button>
  <input type="text">
  <button>3</button>  
  <input type="button" value="5">  
  </div>
<button>6</button>

-1
задан eeskonivich 28 March 2019 в 04:19
поделиться

2 ответа

function buildHierarchy(json) {
    console.log("Entered Build Hierarchy");
    let newObject;
    newObject = buildChildren(json);
    console.log(newObject);


}

function buildChildren(json) {
    if (Array.isArray(json)) {
        return {
            _proficiency: json
        }
    }

    var children = Object.keys(json);
    let final = [];
    for (var i = 0; count = children.length, i < count; i++) {
        let result = {
            name: children[i]
        }
        let d = buildChildren(json[children[i]]);
        if (d._proficiency) {
            result._proficiency = d._proficiency;
        } else {
            result.children = d;
        }
        final.push(result);
    }
    return final;
}
0
ответ дан eeskonivich 28 March 2019 в 04:19
поделиться

Из того, что я вижу в качестве вывода, я делаю следующие выводы:

  • Если дочерний объект является массивом, он слепо копируется на клавишу children
  • Если дочерний элемент является объектом, тогда они изменяются на {name: <KEY>, children: <VALUE>}
function buildChildren(json) {
  let returnObject = [];
    if (typeof json !== 'object') {
    return json;
  }
  for (var key in json) {
    if (Array.isArray(json)) {
      returnObject.push(buildChildren(json[key]));
    } else {
      returnObject.push({
        name: key,
        children: buildChildren(json[key])
      });
    }
  }
  return returnObject;
}
0
ответ дан varun agarwal 28 March 2019 в 04:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: