可以定义和使用自定义标签吗?(这不会与未来的 html 标签冲突) - 同时通过更改 outerHTML 替换/呈现这些标签?
我在下面创建了一个演示,它似乎工作正常
<!DOCTYPE HTML>
<html lang="zh-CN">
<头部>
<script type="text/javascript" src="jquery.min.js"></script>
</head>
<正文>
<div id="customtags">
<c-TextField name="用户名" ></c-TextField> <br/>
<c-NameField name="name" id="c-NameField"></c-NameField> <br/>
<c-TextArea name="description" ></c-TextArea> <br/>
<blahblah ct="d"></blahblah>
</div>
</正文>
<脚本>
/* 下面的代码用实际的 html 替换 cspa —— 哇,它工作得很好 */
函数替换自定义标签(){
// cspa 是一个随机术语——实际上并没有任何意义
var grs = $("*");
$.each(grs,函数(索引,值){
var tg = value.tagName.toLowerCase();
如果(tg.indexOf(“c-”)==0){
控制台.log(索引);
控制台.log(值);
var obj = $(值);
变量 newhtml;
if(tg=="c-textfield") {
newhtml= '<input type="text" value="'+obj.attr('name')+'"></input>';
} 否则 if(tg=="c-namefield") {
newhtml= '<input type="text" value="FirstName"></input><input type="text" value="LastName"></input>';
} 否则 if(tg=="c-textarea") {
newhtml= '<textarea cols="20" rows="3">来自模型的一些描述</textarea>';
}
obj.context.outerHTML = newhtml;
}
z = 对象;
});
}
if(typeof(console)=='undefined' || console==null) { console={}; console.log=function(){}}
$(document).ready(ReplaceCustomTags);
</脚本>
</html>
更新问题:
让我进一步解释一下。请假设在浏览器上启用了 JavaScript - 即应用程序不应该在没有 javascript 的情况下运行。
我见过使用自定义属性在指定标签中定义自定义行为的库。例如 Angular.js 大量使用自定义属性。(它也有关于自定义标签的例子)。尽管我的问题不是从技术策略的角度来看 - 我不明白为什么它会在战略上导致代码的可扩展性/可维护性问题。
对于我来说,像 <ns:contact .....> 这样的代码比像 <div custom_type="contact" ....> 这样的代码更具可读性。唯一的区别是自定义标签被忽略并且不呈现,而 div 类型由浏览器呈现
Angular.js 确实显示了一个自定义标签示例(窗格/选项卡)。在上面的示例中,我使用 outerHTML 替换这些自定义标签 - 虽然我在库中没有看到这样的代码 - 我是否通过使用 outerHTML 替换自定义标签做了一些短视和错误的事情?