2016-10-20 4 views
0

Каков наиболее эффективный способ захватить несколько значений метатега с помощью jQuery? Я храню некоторые значения в метатегах, которые я хочу читать через jQuery, и либо передаю их на вызовы ajax, либо внося изменения в пользовательский интерфейс. База коды я работаю в настоящее время это ...Получить несколько значений метаданных с помощью jQuery?

params: { 
    ad_hash:    $('meta[property=ad_hash]').attr('content'), 
    ad_id:     $('meta[property=ad_id]').attr('content'), 
    ad_advertiser_id:  $('meta[property=ad_advertiser_id]').attr('content'), 
    ad_subcategory_id:  $('meta[property=ad_subcategory_id]').attr('content'), 
    ad_est_firstoccur:  $('meta[property=ad_est_firstoccur]').attr('content'), 
    ad_est_lastoccur:  $('meta[property=ad_est_lastoccur]').attr('content'), 
    ad_firstoccur:   $('meta[property=ad_firstoccur]').attr('content'), 
    ad_lastoccur:   $('meta[property=ad_lastoccur]').attr('content'), 
    ad_time:    $('meta[property=ad_time]').attr('content'), 
    ad_timestamp:   $('meta[property=ad_timestamp]').attr('content'), 
    ad_rating:    $('meta[property=ad_rating]').attr('content'), 
    hostname:    $('meta[property=hostname]').attr('content'), 
    user_clientip:   $('meta[property=user_clientip]').attr('content'), 
    user_searchterm:  $('meta[property=user_searchterm]').attr('content'), 
    user_voted:    $('meta[property=user_voted]').attr('content'), 
    trans_recentlyaired: $('meta[property=trans_recentlyaired]').attr('content'), 
    trans_lastaired:  $('meta[property=trans_lastaired]').attr('content'), 
    trans_on:    $('meta[property=trans_on]').attr('content'), 
    trans_during:   $('meta[property=trans_during]').attr('content'), 
    trans_tobeaired:  $('meta[property=trans_tobeaired]').attr('content') 
}, 

Есть ли более эффективный способ, чтобы захватить несколько меты значений тегов, чем сделать несколько поездок в йот? Вот некоторые альтернативные решения, я Рассмотренные ...

  • Я мог бы ограничить сферу путем добавления головы: $ («мета [свойство = ad_hash]», «голова») атр («содержание»)
  • .
  • Я мог хранить все значения в одной строке JSON, но у меня возникли проблемы с чтением его из метатега.
  • Есть ли способ использовать $ ('meta') для хранения совпадений с переменной, а затем доступ к отдельным тегам внутри нее?

ответ

4

Использование строки JSON будет более эффективным по размеру, но по сути вы просто разбираете XML-данные. Вы могли бы перебрать meta теги для того, чтобы уменьшить, как часто вы выбираете из DOM, и, чтобы сделать ваш код более динамичным:

var params = {}; 
$('head meta[property][content]').each(function() { 
    params[$(this).attr('property')] = $(this).attr('content'); 
}); 
+0

Отлично! Спасибо –

+0

Почти идеально. Получение undefined для всех, кроме последнего this.content? –

+0

Не могли бы вы изменить свой вопрос, чтобы разделить HTML, который вы пытаетесь разобрать (фиктивные данные в порядке)? Таким образом, я могу проверить это, чтобы понять, что случилось. – 4castle