我在ASP.NET Web窗体项目中使用此JavaScript弹出菜单:http://jsfiddle.net/o8x59caz/4/
此代码正常工作,直到我调用包含Ajax代码的JavaScript函数。而这个函数和小提琴中给出的函数在它们之间没有关系或共同的标签(或标签类)。但每当我调用这个Ajax函数时,它会禁用弹出菜单,当我点击显示此弹出菜单的按钮时没有任何反应。但是在控件到达此Ajax函数之前,此弹出菜单工作正常。我试图检查浏览器控制台,但它没有显示错误或警告。以下是我的Ajax函数的代码:
var curevaldiv, ecount = 0;
function SaveAll() {
var gifurl = '<data url of gif animation';
var evalDivs = $("div.evld");
if (evalDivs.length > 0) {
evalDivs.html("<img src='" + gifurl + "' alt='Please wait. ' style='height:35px'/> <span style='font-size: medium'>Evaluating...</span>");
var i; var infoids = '';
for (i = 0; i < evalDivs.length; i++) {
curevaldiv = evalDivs[i];
infoids = infoids + curevaldiv.dataset.infoid + ';';
}
SendToServer(3,
{ "InfoIDs": infoids },
null,
function (data) {
if (data.rstat != -1) {
var infoid, infoval;
var infovals = data.rhtml.split(';');
for (var j = 0; j < infovals.length; j++) {
infoid = infovals[j].split(':')[0];
infoval = infovals[j].split(':')[1];
$('#val' + infoid).html("<i class='fa fa-calculator'></i> <span class='counter'>" +
(infoval == "[ERROR]" ? "<font color='red'><small><i class='fa fa-exclamation-circle'></i> ERROR</small></font>" : infoval) +
"</span>");
}
ecount++;
}
else
curevaldiv.innerHTML = "<font color='red'><small><i class='fa fa-exclamation-circle'></i> ERROR</small></font>";
},
function () {
curevaldiv.innerHTML = "<font color='red'><small><i class='fa fa-exclamation-circle'></i> ERROR</small></font>";
});
}
}
SendToServer()
是我创建的一个Utility函数,用于避免一次又一次地编写常见的Ajax参数。
请帮帮我!过去三天,这个问题让我头疼。 :(
答案 0 :(得分:1)
感谢@eck推荐Chrome的Break On功能。它帮助我检测了DOM破坏的位置。我跟踪了函数调用序列,找到了一个函数,该函数将包含弹出菜单HTML的div
的HTML转换为null
,然后再将其重置回弹出菜单&#39;的HTML。但该插件是在之前的弹出菜单HTML上调用的。我删除了该代码,现在它正常工作。 :)