使用jQuery获取多个元内容值?

时间:2016-10-20 18:16:40

标签: javascript jquery meta-tags

使用jQuery获取多个元标记值的最有效方法是什么?我将一些值存储在我想通过jQuery读取的元标记中,并传递给ajax调用或基于UI进行更改。我正在处理的代码库目前有这个......

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')
},

是否有更有效的方法来获取多个元标记值而不是多次访问dom?以下是我考虑的一些替代解决方案......

  • 我可以通过添加head来限制范围:$('meta [property = ad_hash]','head')。attr('content')
  • 我可以将所有值存储在一个JSON字符串中,但是我遇到了从元标记中读取它的一些问题。
  • 有没有办法使用$('meta')来存储匹配变量的匹配项,然后访问其中的各个标记?

1 个答案:

答案 0 :(得分:4)

使用JSON字符串在大小方面会更有效,但实际上您只是解析XML数据。您可以遍历meta代码,以减少从DOM中选择的频率,并使代码更具动态性:

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