如何在标记之间获取代码

How to get code between markups

本文关键字:之间 获取 取代码      更新时间:2023-09-26

>我从文件加载模板。我的模板的结构:

[[style]].someclass{padding:10px 15px}[[/style]]
[[code]]<tr><td class="someclass">{{text}}</td></tr>[[/code]]

我在"模板"变量中通过 .get() 加载模板:

$.get('template.html', function(template) {
 if (template) {
   //cut css styles from [[style]]..[[/style]] etc.
 }
});

如何在这些标记之间获取内容?

我只需要分配块的内容([[样式]]。[[/样式]], [[代码]]..[/代码]])相关变量,如 var style = ...,var code = ... :)

附言我想我理解表达...我为我的英语:)道歉

[[code]][[style]]不是标准的标记语言标记。它们不被解释为 DOM 元素,因此你不能简单地使用简单的 jQuery 方法来解析它们。

以下是使用正则表达式执行此操作的方法,将每个代码和样式块的内容存储在数组中:

$.get('template.html', function (template) {
    var codeReg = /'['[code]](['s'S]*?)'['['/code]]/g,
        styleReg = /'['[style]](['s'S]*?)'['['/style]]/g,
        codes = [],
        styles = [],
        item;
    while (item = codeReg.exec(template))
        codes.push(item[1]);
    while (item = styleReg.exec(template))
        styles.push(item[1]);
    console.log(codes);
    console.log(styles);
});

实时示例(我使用 $.post 作为示例,因为 JSFiddle 不支持其/echo/html/实用程序的$.get

有趣的话题:

正则表达式参考

在数组中存储 JS 正则表达式捕获组的最佳方法?

编辑:我将(.*?)中几乎匹配任何字符的元字符.替换为匹配所有空格(包括新行)和非空格字符(即所有字符)的字符类['s'S]。参考

HTML

要更改和获取内部html,您可以轻松使用jQuery:

jQuery HTML 函数

为了成功地做到这一点,你需要使用 jQuery 选择器:

jQuery 选择器

特定选择器(仅举几例):

类选择器

元素选择器

.CSS

要更改CSS(<style>标签之间的CSS),您也可以使用jQuery。使用上述选择器,以下内容将派上用场:

各种 jQuery CSS 函数

jQuery CSS 函数

更改代码标记的 html 值:

$("code").html("*whatever you want*");

更改元素的 css 属性,可以通过 id 选择(通过在选择字符串前面加上"#"),也可以由类选择(通过在选择字符串前面加上"."),或者可以通过元素类型选择(您的字符串将是标签名称,即。"正文"、"代码"、"div")。您应该这样做,而不是尝试更改样式标记的 html 值:

$("*anelement*").css({*cssproperty*: *cssvalue*, *cssproperty*: *cssvalue*});
$(".*classofanelement*").css({*cssproperty*: *cssvalue*, *cssproperty*: *cssvalue*});
$("#*idofanelement*").css({*cssproperty*: *cssvalue*, *cssproperty*: *cssvalue*});

..星号 (*) 包含的任何内容都可以更改

如果您在评论中有任何问题,请随时提出问题