页面加载后更改 HTML 代码(使用 jQuery?)

Posted

技术标签:

【中文标题】页面加载后更改 HTML 代码(使用 jQuery?)【英文标题】:Change HTML code after page load (w/ jQuery ?) 【发布时间】:2021-07-29 14:33:04 【问题描述】:

我正在尝试找到一种方法来修改html 代码以将每个 Bootstrap col 类名称(col、col-xs-x、col-x 等)替换为col-12 页面加载后。

我可以用.removeClass('name').addClass('name') 做到这一点,但我需要使用一些正则表达式,因为我想修改 Bootstrap col 类名。

来自这样的事情:

<body>
    <div class="col-xs-6 col-sm-4 col-2"> Content 1 </div>
    <div class="col"> Content 2 </div>
</body>

我想修改成这样:

<body>
    <div class="col-12"> Content 1 </div> <!--can even be class="col-12 col-12 col-12"-->
    <div class="col-12"> Content 2 </div>
</body>

我在这里发现有人在 jQuery 中使用 html().replace 执行此操作,因此我尝试执行相同操作,但它不起作用。

像这样:

$(document).ready(function ()  // my RegEx works well, verified it on regex101
    let col_let_num = $('body').html().replace(/\bcol\b(\-[a-z]0,2)?(\-)?([0-9]0,2)?/i, 'col-12')
    $('body').html(col_let_num)
)

所以我的问题是,您有什么解决方案可以在页面加载后更改 HTML 内容吗?

【问题讨论】:

我认为您没有正确使用引导程序,如果您正确使用引导程序断点类,则不需要删除它们。 添加引导标记,以便引导专家可以介入。我建议解释问题是什么以及您要达到的目标,而不是询问如何大规模更新 HTML 另外$('body').html() 是一件很糟糕的事情...... 是的,但我找不到使用 RegEx 更改这些类名的方法。事实是,如果人们选中一个框,我希望整个列都是 col-12。清楚吗? 有道理,我建议在问题中添加这个用例,使用引导实用程序类可能会有一个聪明的答案 【参考方案1】:

您忘记在 javascript 中添加 ')'。 但我真的无法意识到你在这里想要做什么。 任何方式

$(document).ready(function ()  // my RegEx works well, verified it on regex101
    let col_let_num = $('body').html().replace(/\bcol\b(\-[a-z]0,2)?(\-)?([0-9]0,2)?/i, 'col-12')
    $('body').html(col_let_num)
)

已编辑 给你

$('[class*="col"]').each((i, e) => 
    let classes = $(e).attr('class').split(/\s+/);

    classes.forEach(v => 
        let col_let_num = v.replace(/\bcol\b(\-[a-z]0,2)?(\-)?([0-9]0,2)?/i, 'col-12')
        $(e).attr('class', col_let_num)
    )
)

这应该可以。

【讨论】:

谢谢,我加了。我想要一种用 col-12 替换每个 Bootstrap col 类名的方法。 @Kiji_T 用正确的方法编辑了答案。 :) 它似乎工作,但我有一个疑问,我认为它删除了我一些 。可能吗 ? (我在看) @Kiji_T 嗯,不。尝试输出div,看看代码console.log($('div').length)之前和之后是否有任何变化。 没关系,你只是个神。谢谢你。我想知道你为什么在函数中添加 i、e 和 v。你能告诉我为什么不使用 $(this) 吗?

以上是关于页面加载后更改 HTML 代码(使用 jQuery?)的主要内容,如果未能解决你的问题,请参考以下文章

加载新页面后未呈现文本 - JQuery Mobile

在gridview页面更改后Jquery colorbox不起作用

jQuery 是如何判断HTML页面加载完毕的?它的原理是啥?

如何在使用 QWebEngineView 'loadFinished' 加载页面后立即更改 html 元素?

加载后jQuery触发选择选项

JavaScript之jQuery-4 jQuery事件(页面加载后执行事件处理事件冒泡事件对象模拟操作)