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

标签 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') 存储与变量的匹配,然后访问其中的各个标签?

最佳答案

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

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

关于javascript - 使用 jQuery 获取多个元内容值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40161683/

相关文章:

javascript - 客户端和服务器端编程有什么区别?

javascript - 如何在 React Native 中显示 blob 图像

javascript - CSS Transitions 不过渡

javascript - jquery::为什么悬停会立即触发?

尽管 og :image 正确,但 Facebook Sharing Debugger 给出了错误的结果

JavaScript - 提取文档元字段的最快方法

html - html5 链接预取会影响 Google Analytics 吗?

javascript - 用对象中的值交换键

javascript - 方法 onChange 只是获取最后一个数组值

jquery - 如何从url中获取参数?