Выберите элемент массива JavaScript с помощью селекторов jQuery - PullRequest
2 голосов
/ 03 апреля 2011

У меня есть json, и jQuery, похоже, не правильно выбирает его элементы.Документ json, на который я ссылаюсь, доступен здесь: http://pastebin.com/bM3BvD2F.

json - это массив элементов, и я пытаюсь выбрать один с требуемым идентификатором.

(вы можете скопировать и вставитьна http://jsonviewer.stack.hu/ для красивого сложенного вида)

Вот код, с которым у меня проблемы:

    //get current picture ID - will return '2' - correct value    
    var currentID = window.location.hash ? window.location.hash.substring(1) : allImages[0]["id"];

    //this line will alert name attribute value for a picture with (id = 4) - wrong :(
   alert($(allImages[id=currentID])[0].name);

Ответы [ 2 ]

3 голосов
/ 03 апреля 2011

allImages - это простой массив, поэтому allImages[id=currentID] приведет к созданию временной переменной с именем id, присвоению значения currentID и возврату 2, в результате чего будет возвращен третий элемент в массиве. Этот элемент действительно id из 4.

Вам нужен «глубокий поиск», и один из способов сделать это - использовать функцию .map:

var name = jQuery.map(allImages, function (value) {
    return (value.id == currentID) ? value : null;
})[0].name;

Быстрый тестовый кейс: http://jsfiddle.net/PWPcE/

0 голосов
/ 03 апреля 2011

Попробуйте:

alert($(allImages[id=currentID]).attr('name'));

Я думаю, выбрав 0-й элемент, вы выбираете 1-й символ из ответа, который вы хотите.

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