Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 剥离HTML模板中的所有ID_Javascript_Jquery_Html_Mustache_Hogan.js - Fatal编程技术网

Javascript 剥离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

我有一个为我正在构建的主机插件系统抽象HTML模板的想法

插件以字符串的形式向主机提供其HTML模板(hogan.js兼容)。由于不允许id(一个插件可能有多个实例),主机必须找到一种方法来剥离HTML元素上的所有id属性和/或将它们转换为类


在浏览器中,有没有一种简单的方法,在编译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');
    });
});