Как получить определенные элементы внутри массива внутри jsonObject

Вот почему динамически созданные элементы не реагируют на клики & nbsp;:

var body = $("body");
var btns = $("button");
var btnB = $("<button>B</button>");
// `<button>B</button>` is not yet in the document.
// Thus, `$("button")` gives `[<button>A</button>]`.
// Only `<button>A</button>` gets a click listener.
btns.on("click", function () {
  console.log(this);
});
// Too late for `<button>B</button>`...
body.append(btnB);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>A</button>

В качестве обходного пути вы должны прослушивать все клики и проверять исходный элемент & nbsp;:

var body = $("body");
var btnB = $("<button>B</button>");
var btnC = $("<button>C</button>");
// Listen to all clicks and
// check if the source element
// is a `<button></button>`.
body.on("click", function (ev) {
  if ($(ev.target).is("button")) {
    console.log(ev.target);
  }
});
// Now you can add any number
// of `<button></button>`.
body.append(btnB);
body.append(btnC);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>A</button>

Это называется «Event Delegation». Хорошие новости, это встроенная функция в jQuery: -)

var i = 11;
var body = $("body");
body.on("click", "button", function () {
  var letter = (i++).toString(36).toUpperCase();
  body.append($("<button>" + letter + "</button>"));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>A</button>

0
задан skomisa 29 March 2019 в 17:18
поделиться

1 ответ

Учитывая ваши данные JSON {"BaseID":1,"BaseName":"Bandar-e-Jask Airbase","InGameCord":[{"x":463,"y":451}]}:

  • "InGameCord" - это имя массива, для которого может быть создан экземпляр JSONArray.
  • Этот массив содержит только один элемент: {"x":463,"y":451}.
  • Этот элемент массива может быть создан как JSONObject. Он содержит две пары имя / значение:

    • "x" со значением 463.
    • "y" со значением 451.

На основании предоставленного вами кода создать экземпляр JSONArray:

JSONArray numbers = (JSONArray) jsonObject.get("InGameCord");

Извлечь первый (и единственный) элемент массива в JSONObject:

JSONObject jObj = (JSONObject) numbers.get(0);

Чтобы получить значение для «x» в переменную int, приведите Object, возвращенное get() к а Number, а затем получить его intValue():

int value = ((Number) jObj.get("x")).intValue();

Вы можете даже сделать все это в одной строке, но это уродливо:

[ 1117] [тысяча сто тридцать два]

0
ответ дан skomisa 29 March 2019 в 17:18
поделиться
Другие вопросы по тегам:

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