Javascript .on(“DOMNodeInserted”,函数(e){,e.currentTarget始终是#文档
我正在更新一个2年前的应用程序,该应用程序的一部分包含以下内容: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
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
似乎触发得太早-在尝试附加侦听器之前,页面未完成加载。