javascript - 使用 jQuery 克隆、过滤和 plonk HTML 节点
问题描述
我尝试克隆 HTML 的子节点,过滤克隆并将其放在页面的其他位置。
我试试这个:
var emailTemplate = $("#email-post")[0];
$("#tempStoreEmailTemplate").val(emailTemplate.outerHTML);
$(tempStoreEmailTemplate).find('.num6:hidden').remove();
$("#iframe-textarea").val(tempStoreEmailTemplate.val)//.outerHTML
<div id="tempStoreEmailTemplate" hidden></div>
我在最后一行tempStoreEmailTemplate.val
都试过了。显示此文本tempStoreEmailTemplate.outerHTML
.outerHTML
<div id="tempStoreEmailTemplate" hidden=""></div>
.val
什么都不显示。
预期的结果将是看到修改后的子节点的文本表示。你知道出了什么问题吗?
HTML 嵌套#email-post
如下所示:
<h4>Email Preview</h4>
<!-- Card -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:v="urn:schemas-microsoft-com:vml" id="email-post">
<head>
解决方案
这可能与您存储临时块的方式有关 - 使用.val()
将其放入 value 属性中,这在输入字段中很有用......在div
s 中没有那么多。但是,如果您要附加临时块:
var emailTemplate = $("#email-post") //If you are using the ID tag correctly, this selector will only retrieve one element, you don't need to specify [0]
$("#tempStoreEmailTemplate").append($(emailTemplate))
它将匹配的整个子树的副本作为子#email-post
元素放入匹配的元素#tempStoreEmailTemplate
中;例如:
<div id="tempStoreEmailTemplate" hidden>
<div id="email-post">
...
</div>
</div>
这使您可以进行过滤:
$('#tempStoreEmailTemplate').find('.num6:hidden').remove();
然后将过滤后的 HTML 放入您的文本区域,您可以这样做:
$("#iframe-textarea").val($('#tempStoreEmailTemplate').html())
这会将以下内容放入您的文本区域:
<div id="email-post">
...
</div>
编辑添加:您可能必须更改隐藏方式#tempStoreEmailTemplate
,如果当前解决方案不起作用,那么您可能必须将 div 更改为:
<div id="tempStoreEmailTemplate" style="display:none;">
</div>
推荐阅读
- android - Flutter Android Embedding V1 和 V2 有什么区别
- android - 如何在 Android 中运行 PenAndPdf 项目
- python - tkinter 弹跳球
- python - 如何将每个 Parquet 行组读入单独的分区?
- azure - Azure 策略 - Cosmos DB SQL(核心)API - 将 RU(吞吐量)限制为不超过 500
- ruby-on-rails - 会话中发生 ActionView::Template::Error #new:activeadmin 找不到文件“active_admin/nested_menu_arrow.gif”
- c - 如何更改 openGL 绘图的当前窗口(linux 和 GLX)
- javascript - 使用 visjs 时间线,如何获取时间线中放置的范围项目的开始时间(我将其放置在哪里)
- java - 已经使用 springSecurityFilterChain 构建了异常
- node.js - 安装节点 sass 给出错误消息