javascript - 检查div子元素是否变化

标签 javascript jquery html css

我不明白。 这段代码不应该起作用吗?

这里是 HTML 代码

<div id="past">
    <div data-rollid="283585" class="ball ball-1">7</div>
    <div data-rollid="283586" class="ball ball-1">4</div>
    <div data-rollid="283587" class="ball ball-8">11</div>
    <div data-rollid="283588" class="ball ball-8">14</div>
    <div data-rollid="283589" class="ball ball-1">2</div>
    <div data-rollid="283590" class="ball ball-1">5</div>
    <div data-rollid="283591" class="ball ball-1">2</div>
    <div data-rollid="283592" class="ball ball-1">6</div>
    div data-rollid="283593" class="ball ball-8">13</div>
    <div data-rollid="283594" class="ball ball-1">3</div>
</div>

这里是 jQuery 代码

$('#past').one('DOMSubtreeModified', function() {
    var stuff = $('#panel8-14 .mytotal').html();
    var test = '-';
    if( test.indexOf(stuff) >= 0){
        console.log('asdf');
    }
    else{
        console.log('nope');
}

});

问题是:

  • 当我使用此代码并使用 .one() 函数时,它只会在第一次加载时调用该函数一次,而不是在 div 内容更改时...

  • 当我使用 .bind 或 .on 执行此操作时,我会返回 2 次...

最佳答案

你可以使用MutationObserver

var target = $("#past").get(0);

var observer = new MutationObserver(function(mutations) {
  mutations.forEach(function(mutation) {

    if (mutation.removedNodes.length) {
      console.log("removed nodes", mutation.removedNodes[0].nodeValue);
      alert("removed nodes");
    }

    if (mutation.addedNodes.length) {
      alert("added nodes");
      console.log("added nodes", mutation.addedNodes[0].nodeValue);
    }

  });
});

var config = {
  childList: true,
  subtree: true,
  characterData: true
};

observer.observe(target, config);

$("#past div:first").text(1); // do stuff
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<div id="past">
  <div data-rollid="283585" class="ball ball-1">7</div>
  <div data-rollid="283586" class="ball ball-1">4</div>
  <div data-rollid="283587" class="ball ball-8">11</div>
  <div data-rollid="283588" class="ball ball-8">14</div>
  <div data-rollid="283589" class="ball ball-1">2</div>
  <div data-rollid="283590" class="ball ball-1">5</div>
  <div data-rollid="283591" class="ball ball-1">2</div>
  <div data-rollid="283592" class="ball ball-1">6</div>
  <div data-rollid="283593" class="ball ball-8">13</div>
  <div data-rollid="283594" class="ball ball-1">3</div>
</div>

关于javascript - 检查div子元素是否变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36876964/

相关文章:

jquery - 使用 jQuery 查询 Google Places API

jquery - 我正在尝试使用 jQuery 更改背景图像,它可以在我的本地机器上使用,但不能用于在线服务

javascript - 启用 javascript 的浏览器是否承认 noscript?

html - 在html中变量前的点表示什么?

javascript - 如何将 JQuery AJAX 函数转换为 vue.js

jquery - Bootstrap 3 : Show the error message with fixed Grid Layout

javascript - 需要使用d3根据月度数据绘制季度折线图

javascript - 隐藏/显示子菜单

javascript - Angular Material Datepicker 为空

javascript - 如何在 JavaScript 中使用正则表达式优雅地提取字符串?