Javascript 剥离HTML模板中的所有ID
我有一个为我正在构建的主机插件系统抽象HTML模板的想法 插件以字符串的形式向主机提供其HTML模板(hogan.js兼容)。由于不允许id(一个插件可能有多个实例),主机必须找到一种方法来剥离HTML元素上的所有id属性和/或将它们转换为类Javascript 剥离HTML模板中的所有ID,javascript,jquery,html,mustache,hogan.js,Javascript,Jquery,Html,Mustache,Hogan.js,我有一个为我正在构建的主机插件系统抽象HTML模板的想法 插件以字符串的形式向主机提供其HTML模板(hogan.js兼容)。由于不允许id(一个插件可能有多个实例),主机必须找到一种方法来剥离HTML元素上的所有id属性和/或将它们转换为类 在浏览器中,有没有一种简单的方法,在编译hogan/mustache模板之前,先对其进行预处理,去掉所有id属性(或将其更改为类属性)?我认为在服务器端应该做得更好 在客户端可以是这样的(仍然需要更多地指定哪些元素): 你能告诉我们你做了什么吗?tried
在浏览器中,有没有一种简单的方法,在编译hogan/mustache模板之前,先对其进行预处理,去掉所有id属性(或将其更改为类属性)?我认为在服务器端应该做得更好 在客户端可以是这样的(仍然需要更多地指定哪些元素):
你能告诉我们你做了什么吗?triedI还没有尝试:)处理已编译的hogan模板并不容易(你可能需要用JS编写JS解析器),但在包含每个插件实例后,你可以从DOM中删除ID,但没有成功。。。如果JS或CSS引用这些ID,当您剥离ID时,带有JS或CSS的HTML代码可能会中断。所以,唯一好的解决办法是手动保持插件的源代码“干净”。你错过了一个报价。。这里
$(this).addClass(id\u val).removeAttr('id)代码>也就是说,每个元素都有一个id。编译之前或之后都应该在模板上完成(我想是在字符串上),而不是在已经完成的元素上。@janesconference,是的。在“我的代码”中,它会选择每个具有ID的div。如果需要每个元素,请仅删除div文本,并将此代码添加到html的末尾,而不使用.ready()
函数wrap。这有点奇怪,我无法想象在哪里删除所有id将是一个好的解决方案。。。。
$(document).ready(function () {
$("div[id]").each(function(){ // I used div element, you should be more specific in this selector
var id_val = this.id;
$(this).addClass(id_val).removeAttr('id');
});
});