jquery - jQuery 如何在后台实现 before 方法?
问题描述
我们怎么可能将带有 HTML 标记的字符串传递给jQuery 的 .before方法并成功构建元素?是否有一些隐藏的逻辑以某种方式扫描字符串并使用 .createElement 将其构建到实际节点中?当我试图在 jQuery 中找到这个字符串到节点逻辑时,我什么也没找到。请参阅下面的更多细节。
.before 方法实现与未缩小的 Jquery 3.6.6 中的完全一样 - https://code.jquery.com/jquery-3.6.0.js
我从中了解到的是,他们调用了 .insertBefore 方法,它是 vanilla javascript。
但是 insertBefore 需要一个节点 - 这意味着您必须执行 document.createElement 来创建它,文档如下:
let insertedNode = parentNode.insertBefore(newNode, referenceNode)
//insertedNode = The node being inserted (the same as newNode)
来自 .insertBefore 的 MDN 文档 - https://developer.mozilla.org/en-US/docs/Web/API/Node/insertBefore
那么,为什么 jQuery 让我们调用.before('<p>Test</p>')
并且它可以工作,即使看起来 jQuery 没有使用 .createElement 构建节点?
我希望在 jQuery 中找到类似下面的代码
//somehow dynamically get tagName + textValue
var tag = document.createElement(tagName); //'p'
tag.innerText = "textValue //'Test'
jQuery .before 方法会使用它,但我什么也没找到。
我确实在他们的代码中找到了 jQuery.parseHTML 函数,这是他们使用 createElement 动态创建节点的唯一函数,但是这个函数并没有被 before 方法使用,所以 .before 方法如何能够获取字符串 HTML作为参数并在实现中没有这样的逻辑时成功将其转换为节点?
解决方案
推荐阅读
- python - 在我的命令上发送消息的不和谐机器人
- python - 如何用元组迭代列表并将其用作python字典中的键、值
- api - 将 G Suite 用户检索为不属于任何组的成员
- python - 我正在为另一个专栏做,但没有得到任何年的消费税
- go - Bazel docker_image 复制额外的文件夹
- node.js - 如何使用节点 js 更改 csv 文件的标题?
- c# - Asp.net Core MVC 属性路由约束的意外行为
- reactjs - 如何将 cookie 设置为过期/删除(axios react express)?
- python - systemd 启动一个激活虚拟环境的脚本不生效
- laravel - 在 Laravel 中添加带有搜索结果的排序路径