0

我知道由于各种原因使用自定义 html 标签是不合适的,但我想由你运行一个特定的情况,这可能需要一个自定义 html 标签,并希望得到告知,或者可能是实现我目标的更好方法。

在我的代码中,我有我称之为模板的东西,它由一个带有模板的 div 标签和一个附加到它的隐藏类组成。这在屏幕上不可见,但基本上这些“模板”标签包含我在 Javascript 中用于创建各种不同项目的 html。我这样做是为了可以在 html 中设置模板的样式,而不必担心将 CSS 与我的 Javascript 混合。

<!-- TEMPLATE -->
<div class="template hidden">
    <span>Random Container</span>
    <a href="#">Random Button</a>
</div>

在javascript中我会做类似的事情

var template = document.getElementById("template");
var clone = template.cloneNode(true);
clone.removeClass("template hidden");

我宁愿能够做这样的事情

<template class="hidden">
   <span>Random Container</span>
   <a href="#">Random Button</a> 
</template>

因此,如果我在一个 div 中有多个模板,我可以将它们全部抓取,而不必为它们提供唯一的类名。当然,我需要一个实现的理由比这要深得多,但没必要在细节上浪费你的时间。让我们说这将有助于清理我的 Javascript ALOT。

因为自定义模板标签是隐藏的,实际上只不过是一个容器,可以方便地在 javascript 中使用 document.getElementsByTagName("template"); 调用。这可以吗?我可能会在标签前面加上一个自定义名称,以防模板被实现到 html 中。

4

2 回答 2

2

现代浏览器在解析它们和构造 DOM 节点的意义上通常“支持”自定义标签,以便可以在脚本中对元素进行样式设置和处理。

主要问题是 IE 9 之前的 IE,但可以document.createElement('...')对每个自定义标记名称使用一次来处理它。

另一个问题是验证器会将标签报告为错误,如果存在大量此类错误,您可能不会注意到标记中的一些真正错误。原则上,您可以创建自己的 DTD 来处理这个问题(我正在构建一个 HTML DTD 生成器,但它比我预期的要复杂......)。

有了这些保留,如果与使用类相比,它们从本质上简化了您的工作,请使用自定义标签。

于 2012-02-29T21:32:09.830 回答
1

为什么不使用 HTML5 的数据属性之一?它们用于存储私人数据或自定义信息。

对于您的情况,您可以添加data-type="template"ordata-name="template"然后基于此搜索和删除。一个简单的功能,就像您编写删除<template>标签一样,但不会违反规则。

所以,用你的例子,<div data-type="template" class="hidden"></div>

于 2012-02-29T21:25:26.167 回答