当 div 被填充/可见时触发事件

Posted

技术标签:

【中文标题】当 div 被填充/可见时触发事件【英文标题】:Trigger an event when a div is populated/visible 【发布时间】:2017-01-03 15:52:09 【问题描述】:

一旦从后面填充了一个 DIV,我想触发一个事件,我的 DIV 中插入了 2 个节点。我正在使用这个:

$(function () 
    var xml = document.querySelector('#XML');

    xml.addEventListener("DOMNodeInserted", function (ev)   
        doSomething();
    , false);
);

这在加载或重新加载文档后填充 XML div 时有效。 在某些时候,用户单击一个按钮并且 div#XML 被动态填充而无需重新加载,即使将 DOM 节点插入到我的元素中,也没有任何反应。

当我的 div 发生变化时,如何触发“doSomething()”?

【问题讨论】:

你的问题是什么? developer.mozilla.org/en-US/docs/Web/API/MutationObserver 【参考方案1】:

您的代码运行良好。就像你在Mutation events 和相对兼容性HERE 中看到的那样:

$(function () 
  $('#XML').on("DOMNodeInserted", function (ev) 
    console.log('DO SOMETHING');
  );

  $('#btnAdd').on('click', function(e) 
    $('#XML').append($('<p>', text: 'this is a new paragragh'));
  );
);
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>

<div id="XML"></div>

<button id="btnAdd">Add a paragragh to div</button>

【讨论】:

【参考方案2】:

以下代码可能是您要查找的代码。它会在每个1000 milliseconds 中查找您的div 中的更改,您可以根据自己的要求进行更改。如果您的 div 最初有一些 text,则相应地更新 oldVal

$('#XML').change(function()
   alert("div has changed!");
   // replace with your actions
);

var oldVal = "";
function InputChangeListener()

   if($('#XML').val() != oldVal)
   
     oldVal  = $('#XML').val();
     $('#XML').change();    
   

setInterval(InputChangeListener, 1000);

【讨论】:

以上是关于当 div 被填充/可见时触发事件的主要内容,如果未能解决你的问题,请参考以下文章

当 ViewController 被呈现的 ViewController 覆盖时触发事件

当 css 值改变时触发事件

当转换在 div 上结束并且转换在所有 CHILD div 上结束时触发 webkitTransitionEnd 事件?

用事件冒泡实现在div内点击,不触发事件,当在div外点击时才触发事件

元素存在时触发事件

捕获自动完成文本框交叉图标的事件