可以定义和使用自定义标签吗?(这不会与未来的 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 替换自定义标签做了一些短视和错误的事情?