Эквивалент jQuery / JavaScript each() для одного элемента?

#javascript #jquery #json #each

#javascript #jquery #json #каждый

Вопрос:

Может кто-нибудь сказать мне, как обновить следующий код, чтобы просто получить первый элемент, возвращаемый в объекте (данные)? Я знаю, что использование each () только для одного элемента не очень эффективно, и хотел бы улучшить его.

 $(data).each(function(num, entry){
    if ( num > 1 ) return false;
});
  

Вот пример того, что data такое:

 [
    {
        "id": 1,
        "title": "My post",
        "permalink":"http://site.com/page.html/",
        "date":" 2011-05-10 
    }
]
  

Ответ №1:

Обновление 2:

Поскольку data это просто массив (я предполагаю, что JSON уже проанализирован (если вы не можете использовать jQuery.parseJSON или JSON.parse )), вы можете получить первый элемент с простым доступом к массиву:

 var first = data[0];
  

Прочитайте больше о массивах.


Старый ответ:

Попробуйте

 $(data).first()      // returns jQuery object
// or
$(data).eq(0)        // returns jQuery object
// or 
$(data).get(0)       // returns DOM object
// or
$(data)[0]           // returns DOM object
  

в зависимости от имеющихся у вас данных и того, что вы хотите сделать.

Обновить:

Если data это на самом деле объект JavaScript, то нет необходимости передавать его в jQuery (jQuery в основном предназначен для работы с DOM).

Просто выполните цикл над ним с

 for(var prop in data) {

}
  

Но вы не можете получить свойство «first», потому что они неупорядочены.

Если это массив, просто используйте data[0] .

Чтобы помочь вам больше, вы должны опубликовать то, что data есть.

Комментарии:

1. Спасибо! Раньше я делал что-то вроде entry.title, entry.image и т.д. для определения свойств из данных JSON. Как бы я сделал это сейчас, используя один из ваших методов?

2. $(данные). first() возвращает объект jQuery с одним элементом, так что вы можете вызвать его, var entry = $(data).first(); а затем entry.title вернет то же самое, что и ваш оригинал each .

3. @Cofey: Если это объект, то вы должны сделать это совершенно по-другому. Пожалуйста, посмотрите мое обновление и опубликуйте, что именно data такое.

Ответ №2:

Вы можете сделать это:

 $(data).get(0); //same as $(data)[0]