有没有一种简单的方法,例如,删除XML名称空间,但是使用jQuery或JavaScript保持标记不变?例如:
<html:a href="#an-example" title="Go to the example">Just an Example</html:a>
并将其更改为:
<a href="#an-example" title="Go to the example">Just an Example</a>
使用jQuery或JavaScript动态,不知道里面的元素和/或属性?
答案 0 :(得分:3)
如果要替换的代码中没有<script>
标记,您可以尝试(demo):
container.innerHTML = container.innerHTML
.replace(/<(\/?)([^:>\s]*:)?([^>]+)>/g, "<$1$3>")
答案 1 :(得分:0)
这不是一个真正的答案,但你最好处理这个服务器端。对于这种任务,JavaScript进入图片有点太晚......事件可能已经附加到现有节点,并且您将处理每个元素两次。
命名空间的目的是什么?
如果这些是静态html文件而命名空间没有用,我会用正则表达式删除所有名称空间。
如果它们不是静态的并且命名空间在作为xml提供时有用,那么您可以执行一些服务器端检测以使用正确的doctype和命名空间(适当时)。
答案 2 :(得分:0)
当你知道怎么做时很简单......只需使用\\来逃避冒号,这样它就不会被jquery解析引擎解析为动作分隔符。
$('html\\:a').each( function(){
var temp = $(this).html();
$(this).replaceWith("<a>"+temp+"</a>");
});
这应该在每个元素之间迭代,并用普通标签替换它们。由于这些是为ajax回调功能提供的,否则我不明白为什么你想要动态地做...然后顶线会改为:
$.post('...',{}, function(dat){
$(dat).find('html\\:a').each( blah blah ....
.
.
});
NB,我是那些只在FF中真正测试过的可怕人物之一...