You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery如何将.param-value类元素的内容赋值给其data-content属性

问题背景

需要为所有类名为.param-value的元素添加popover,通过jQuery实现以遵循DRY原则。

问题描述

如何将元素的data-content属性值设置为该元素自身的内容?
预期效果示例:

<p class="param-value" [...] data-content="Example Data 1">Example Data 1</p>
已尝试方案

尝试使用$(this).html()获取内容,但当前场景不是事件handler,无法通过该方式获取对应元素的内容。

现有代码

HTML代码

<div class="param-row row">
    <div class="col-3"><p class="param-name">Example Label 1</p></div>
    <div class="col-3"><p class="param-value">Example Data 1</p></div>
    <div class="col-3"><p class="param-name">Example Label 2</p></div>
    <div class="col-3"><p class="param-value">Example Data 2</p></div>
</div>
<div class="param-row row">
    <div class="col-3"><p class="param-name">Example Label 3</p></div>
    <div class="col-3"><p class="param-value">Example Data 3</p></div>
    <div class="col-3"><p class="param-name">Example Label 4</p></div>
    <div class="col-3"><p class="param-value">Example Data 4</p></div>
</div>

原JS代码

$(function () {
    $('[data-toggle="popover"]').popover({'trigger':'hover'})
})

$('.param-value').attr('data-container','body')
$('.param-value').attr('data-toggle','popover')
$('.param-value').attr('data-placement','bottom')
$('.param-value').attr('data-html','true')
$('.param-value').attr('data-content',$(this).html())
解决方案

原代码存在两个问题:

  1. 全局作用域下的$(this).html()中的this指向window对象,无法匹配到.param-value元素
  2. 属性设置逻辑写在DOM ready回调外,可能出现DOM未加载完成、元素匹配失败的问题

可以使用jQuery attr方法的回调参数实现需求,修改后的JS代码如下:

$(function () {
    // 批量设置公共属性
    $('.param-value').attr({
        'data-container': 'body',
        'data-toggle': 'popover',
        'data-placement': 'bottom',
        'data-html': 'true'
    // 为每个元素单独设置data-content,回调函数内this指向当前遍历的元素
    }).attr('data-content', function() {
        return $(this).html()
    })
    // 属性设置完成后再初始化popover
    $('[data-toggle="popover"]').popover({'trigger':'hover'})
})

内容的提问来源于stack exchange,提问作者Lewis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 18:39:03