javascript - Ajax 禁用弹出菜单插件

标签 javascript jquery html asp.net ajax

我在 ASP.NET Web 窗体项目中使用此 JavaScript 弹出菜单:http://jsfiddle.net/o8x59caz/4/

这段代码工作正常,直到我调用包含 Ajax 代码的 JavaScript 函数。并且这个函数和 fiddle 中给出的函数之间没有关系或公共(public)标签(或标签类)。但每当我调用此 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>&nbsp;<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() 是我创建的实用函数,以避免一次又一次写入常见的 Ajax 参数。

请帮助我!这个问题困扰了我三天的头。 :(

最佳答案

感谢 @eck 建议 Chrome 的 Break On 功能。它帮助我检测 DOM 的损坏位置。我跟踪了函数调用序列,发现一个函数正在将包含弹出菜单 HTML 的 div 的 HTML 设为 null,然后再次将其重置回弹出菜单的 HTML 。但该插件是在之前的弹出菜单的 HTML 上调用的。我删除了该代码,现在它工作正常。 :)

关于javascript - Ajax 禁用弹出菜单插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30683313/

相关文章:

javascript - 没有带有 fetch() 的 JSON 对象

javascript - 流默认值类型检查

javascript - 使用 html5 数据列表自定义自动完成

html - 当祖先有类 CSS (LESS) 时改变 li 的高度

html - CSS - 改变按钮颜色?

javascript - jQuery CSS 不工作但 Animate 是

javascript - 如何正确加载导航栏和页面内容?

javascript - 尝试使用 jQuery remove() 函数删除选择框

javascript - 计算屏幕上特定位置存在多少层

Javascript 停止并返回海报 HTML 5 视频