javascript - 每次更新 jQuery 中的 DOM 引用

标签 javascript jquery dom reference

我正在修改 $.each() 循环内的元素 innerHTML 属性。现在,如果我的元素堆栈包含我更新 innerHTML 的元素的子元素,则该子元素的 DOM 引用将会丢失。

例子:

$(function(){
    $stack = $(".myelement, .myelement *");
    $stack.each(function(){
        var $this = $(this);
        var element = $(this)[0];
        console.log(element.innerHTML = element.innerHTML + " modified");
    });
});

fiddle :https://jsfiddle.net/b0ux0v5e/

我首先修改了 .myelementinnerHTML。这包括 child p。因此,此元素的 DOM 引用丢失,并且不会附加“已修改”。

如果不构建为元素创建唯一选择器并在每个循环中重新捕获它的函数,如何解决这种情况?

注意:我并不是要求专门将一些文本附加到节点。这只是一个例子。在实际项目中,我正在替换 innerHTML 中的文本。

最佳答案

我猜你想修改文本内容。在这种情况下,您想了解 .contents() 方法,该方法还可以让您遍历文本节点:

$(function() {
  $(".myelement").contents().each(function(i, el) {
    el.textContent += " 'modified'";
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="myelement">
  I am the myelement
  <p>
    Hello world
  </p></div>

关于javascript - 每次更新 jQuery 中的 DOM 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35057477/

相关文章:

javascript - 以编程方式将数据发送到 iframe

jquery - z-index 不适用于谷歌浏览器中的 fancybox

javascript - 在 React Native 中创建 'Div' 和 'Span' 组件

javascript - img 自动调整大小并保持线条

javascript - 使用 Javascript 检查给定 HTML 元素中是否存在子元素

javascript - 电子表格应用程序 : getRange and setValues

jQuery OOP 基础知识

javascript - 用于删除字符串中空格的正则表达式

javascript - 为什么这个 childNodes 会给我那个奇怪的输出?

javascript - 如何: On keypress get textarea1 height and set height to textarea2