javascript - 操作 dom 元素而不修改实际 dom 状态

标签 javascript jquery

我知道当我们这样做时:

var el = $("#el")

我们本质上是在引用一个实际的 DOM 元素。并在做$("#el").text("new text")将导致该元素(在 DOM 中)上的文本发生更改。

我的问题是,如果我想使用这个元素作为模板怎么办?

var new_element = $("#el").text("new element") // just this element manipulation
$("ul").prepend( new_element ); // actual dom manipulation

或者,我是否必须注入(inject) <div id="newObject"></div>进入 DOM 世界,获取它的引用然后进行操作?

编辑:

$("#el").clone() 就是这样做的方法

最佳答案

不,您不需要将其放入 DOM 中。您只需让 jQuery 创建元素并引用它即可。克隆元素很重要。如果你不这样做,它只会改变原来的元素,并且由于一个元素不能同时位于两个位置,它只会移动。

const templateLi = $('<li class="foo"></li>')

function addLi(text) {
  const li = templateLi.clone().text(text)
  $("ul").append(li)
}

addLi("hello")
addLi("bacon")
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>

</ul>

关于javascript - 操作 dom 元素而不修改实际 dom 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57962302/

相关文章:

javascript - 如何从订阅者执行 dom 操作而不产生 RxJS 副作用?

javascript - Foundation CSS 框架的 Closure Compiler externs

javascript - 获取具有相同类的多个输入字段的值并添加到javascript对象中

javascript - 根据字符串长度更改样式

javascript - 无法使用 AjaxSubmitButton 上传图片

javascript - 遍历元素并根据链接属性进行更改

javascript - Chromedriver : session deleted because of page crash

javascript - 用于 secret 入口链接的按键组合

javascript - 如何在关闭 Accordion 时自动关闭 Accordion 内部的所有可折叠元素?

javascript - 使用 jQuery 在可能的属性值中进行选择