【问题标题】:tag replacement标签替换
【发布时间】:2010-12-12 23:32:08
【问题描述】:

有人知道如何使用 Jquery 为标签设置新的 tagName 吗?假设我有一个 HTML 文档,我想替换所有 'fieldset' 宽度 'div'。 提前致谢!

【问题讨论】:

  • 为什么不在 HTML 中将 FIELDSET 更改为 DIV?
  • 我的代码已生成,不幸的是我无法更改标签...
  • 你有 owerflow 的问题
  • 我想将我的字段集更改为 div 的原因是因为当我使用 Firefox 打印时我的字段集被剪切了。我已经尝试将溢出设置为“可见”,将高度设置为“自动”,但仍然无法正确打印...

标签: jquery html dom tags replace


【解决方案1】:
fs = $("fieldset");
for (i = 0; i < fs.length; i++) {
    var that = $(fs[i]);
    var fieldsetContent = that.html();
    that.replaceWith('<div>'+fieldsetContent+'</div>');
};

或尝试溢出这个 css 修复 css:

fieldset {
    display: table-column;
}
<!–[if IE]>
fieldset {
    display: block;
}

比你可以设置其他样式。

【讨论】:

  • 我升级了我的 Jquery 版本,但它仍然不起作用...这是我的代码 /*$("fieldset").each(function(i) { fieldsetContent = $(this ).innerHTML(); $("<div class="fieldset">" + fieldsetContent +"</div>").replaceAll("fieldset"); });*/
  • 感谢 jmav,我已经尝试过您的解决方案,但它没有按我想要的方式工作。当我发出“fieldsetContent”警报时,它确实返回了我的字段集的内容,但是当我把它放在我的“replaceWith”函数参数中时,它什么也没做......我可以解决问题的一方面(可以将我的字段集更改为 div),但是当我通过添加字段集内容来组合它时,什么也没有发生....
  • 我自己尝试了codemyself,它可以工作。请发送整个未修改的页面和您想要的页面。我会尽力帮助你。你用萤火虫吗??
  • 最好使用函数而不是每个函数。它更快。看net.tutsplus.com/tutorials/javascript-ajax/…第3节
  • 如果适合您,您可以查看我的修复:stackoverflow.com/questions/1673346/…
【解决方案2】:

您可以使用replaceWith 或replaceAll 函数来替换元素。

您必须手动将旧元素中的内容放置到新元素中。

$('fieldset').each(function(object){
    var html = this.html(); 
    this.replaceWith('div').html(html)
});

类似的东西。代码未经测试。

【讨论】:

  • 我认为您需要先保存 HTML 内容,然后再调用 replaceWith(),例如(在上述函数体内): var h = $(this).html(); $(this).replaceWith('div').html(h);
  • 我试过这个: $("fieldset").each(function(i) { var fieldsetContent = $(this).html(); $(this).replaceWith("
    " + fieldsetContent + "
    "); }) 但它没有按我预期的方式工作......有什么想法吗?
  • 其实我用的是jquery-1.js,它返回一个错误,说html()不是一个函数...
【解决方案3】:

也许尝试解决问题的根源更简单,更有效。我无法想象 Firefox 中有一些硬编码会导致字段集被切断。我 99% 确信这可以通过一些 CSS 得到帮助。也许您可以在 Mozilla 的论坛中找到更多信息或更多现场帮助?也许用 firebug 检查字段集和 div,并一一比较它们的设置,会有所帮助吗?

【讨论】:

  • 嗨,我已经尝试了所有这些...问题已报告,但给出的解决方案并没有解决我的问题。但我的帖子的重点是找出是否有办法替换标记名并保留其内容。
【解决方案4】:

我不知道你处于什么样的环境,但也许最简单的方法是设置一个“打印视图”页面,它可以动态读取原始 HTML 页面并在源代码中进行低级替换代码?

在 PHP 中,它看起来像这样:

$body = str_replace("<fieldset>", "<div>", $body);
$body = str_replace("</fieldset>", "</div>", $body);

非常低级,但如果 HTML 是干净的,则可以工作。

【讨论】:

  • IE浏览器可能会出现问题,必须在添加内容之前完全生成标签。
  • 不,我的意思是在将 HTML 输出到浏览器之前对其进行完全预处理。还是你的意思是别的?
猜你喜欢
  • 2016-07-26
  • 1970-01-01
  • 2012-03-13
  • 2015-03-26
  • 1970-01-01
  • 2018-02-01
  • 2011-05-22
  • 1970-01-01
  • 2023-04-10
相关资源
最近更新 更多