Javascript .on(“DOMNodeInserted”,函数(e){,e.currentTarget始终是#文档

Javascript .on(“DOMNodeInserted”,函数(e){,e.currentTarget始终是#文档,javascript,jquery,dom-events,Javascript,Jquery,Dom Events,我正在更新一个2年前的应用程序,该应用程序的一部分包含以下内容: function setupListener(currentXmlHttpRequests){ debugger; $(document).unbind("DOMNodeInserted"); $(document).bind("DOMNodeInserted", function(e){ debugger; console.log(e.currentTarget.id); if(e.targe

我正在更新一个2年前的应用程序,该应用程序的一部分包含以下内容:

function setupListener(currentXmlHttpRequests){
  debugger;
  $(document).unbind("DOMNodeInserted");
  $(document).bind("DOMNodeInserted", function(e){
    debugger;
    console.log(e.currentTarget.id);
    if(e.target.id=="page-bottom"){
      refreshFilterList("Last 6 Months Of Launches");
      refreshQuickJump(filtered);
      $("#mySelect").on('change', function() {
        var val = this.value;
        if(val == "")
          return;
        document.getElementById(val).scrollIntoView();
        var element = document.getElementById('mySelect');
        element.value = "";

      });
      $("#datacenter").SumoSelect({placeholder: "All Datacenters"});
      $("#year").SumoSelect({placeholder: "All Years"});
      $("#platform").SumoSelect({placeholder: "All Platforms"});
      $("#tech").SumoSelect({placeholder: "No Technologies"});
      $("#tech")[0].sumo.selectItem(1);
      $("#tech")[0].sumo.selectItem(2);
      $("#tech")[0].sumo.selectItem(3);
      $("#version").SumoSelect({placeholder: "All Versions"});
      $("#query").keyup(function(e) {
        if(e.keyCode == 13) {
          setFilters();
          changeURL(scriptName);
          if(checkFiltersDefault())
            loadDefault();
          else
            filter(filteredServiceNames[env], true);
          refresh(currentXmlHttpRequests);
        }
      });
      $("#search").on("click", function(){
        setFilters();
        changeURL(scriptName);
        if(checkFiltersDefault())
          loadDefault();
        else
          filter(filteredServiceNames[env], true);
        refresh(currentXmlHttpRequests);
      });
      $("#clear").on("click", function(){
        clearFilters();
        changeURL(scriptName);
        loadDefault();
        refresh(currentXmlHttpRequests);
      });
    }
  });
}
但当输入此项时,
e.currentTarget
始终为
#document
e.target.id
始终为空。这将导致侦听器从未应用

页面底部
是在此之前的另一种方法中设置的:

function setupLast(dashboard) {
    dashboard.rows.push({
        title: 'Chart',
        height: 25,
        editable: false,
        panels: [{
            title: ' ',
            type: 'text',
            span: 0,
            mode: 'html',
            content: "<!DOCTYPE html><html><body><div id=\"page-bottom\"  style=clear:both></div></body></html>",
            height: 25,
            transparent: true,
            id: -1
        }]
    });
}
功能设置上次(仪表板){
dashboard.rows.push({
标题:“图表”,
身高:25,
可编辑:false,
面板:[{
标题:“”,
键入:“文本”,
跨度:0,
模式:“html”,
内容:“,
身高:25,
透明:是的,
身份证:-1
}]
});
}
写这篇文章的人最初插入了这个div,作为我们观察页面何时完成加载的一种方式。他的旧文档有:

大多数仪表板都有一个不可见的面板,该面板添加在 仪表板用于了解何时可以安全执行 jquery事件绑定等。这通过使用jquery的 “DOMNodeInsert”事件,以等待添加面板内的div 转到页面


我不确定问题出在哪里——如果可能是在基础应用程序升级时(升级2年)它升级了jquery版本,或者我只是缺少了一些东西。我可以看到
页面底部实际上是在页面中结束的。但是当页面加载时,这些侦听器设置永远不会被执行。

尝试使用
e.target
而不是
currentTarget

我会去掉
div
detection机制,并使用jQuery api方法:

$(document).ready(function() {
  refreshFilterList("Last 6 Months Of Launches");
  refreshQuickJump(filtered);
  $("#mySelect").on('change', function() {
    var val = this.value;
    if(val == "")
      return;
    document.getElementById(val).scrollIntoView();
    var element = document.getElementById('mySelect');
    element.value = "";

  });
  $("#datacenter").SumoSelect({placeholder: "All Datacenters"});
  $("#year").SumoSelect({placeholder: "All Years"});
  $("#platform").SumoSelect({placeholder: "All Platforms"});
  $("#tech").SumoSelect({placeholder: "No Technologies"});
  $("#tech")[0].sumo.selectItem(1);
  $("#tech")[0].sumo.selectItem(2);
  $("#tech")[0].sumo.selectItem(3);
  $("#version").SumoSelect({placeholder: "All Versions"});
  $("#query").keyup(function(e) {
    if(e.keyCode == 13) {
      setFilters();
      changeURL(scriptName);
      if(checkFiltersDefault())
        loadDefault();
      else
        filter(filteredServiceNames[env], true);
      refresh(currentXmlHttpRequests);
    }
  });
  $("#search").on("click", function(){
    setFilters();
    changeURL(scriptName);
    if(checkFiltersDefault())
      loadDefault();
    else
      filter(filteredServiceNames[env], true);
    refresh(currentXmlHttpRequests);
  });
  $("#clear").on("click", function(){
    clearFilters();
    changeURL(scriptName);
    loadDefault();
    refresh(currentXmlHttpRequests);
  });
});

仅供参考,
domanodeinserted
已经过时。请尝试使用instead。不幸的是,
ready
似乎触发得太早-在尝试附加侦听器之前,页面未完成加载。