2015-06-06 5 views
1

Я использую это всплывающее меню JavaScript в моем проекте ASP.NET Web Forms: http://jsfiddle.net/o8x59caz/4/Ajax отключить плагин всплывающего меню

Этот код работает отлично, пока я не вызвать функцию JavaScript, которая содержит Ajax код. И эта функция и то, что указано в скрипке, не имеет отношения или общих тегов (или классов тегов) между ними. Но всякий раз, когда я называю эту функцию 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.

Пожалуйста, помогите! Эта проблема делает мою голову тяжелой в течение последних трех дней. :(

+0

Возможно ли, что вы заменяете части вашего всплывающего меню с результатами вызова AJAX? – tvanfosson

+0

@tvanfosson Я проверил его с помощью Firefox и IE Inspect Element, но после вызова Ajax я не нашел замены в всплывающем меню. –

+1

Я бы попробовал использовать модификации поддерева Chrome 'Break on>, чтобы убедиться, что всплывающее меню не получилось каким-то образом манипулировать. Мое первое предположение заключалось в том, что вы как-то нарушаете DOM. Трудно сказать, не видя остальной код. – eck

ответ

1

Спасибо, что предложили функцию Chrome Break On, которая помогла мне обнаружить, где DOM ломается. Я проследил последовательность вызовов функций и нашел функцию, которая создавала HTML-код div, содержащий всплывающее меню HTML до null, а затем снова вернул его обратно в HTML-код всплывающего меню, но плагин был вызван в предыдущем HTML-меню всплывающего меню. Я удалил этот код, и теперь он работает нормально. :)

Смежные вопросы