У меня действительно раздражающая проблема с jQuery и / или диалоговым окном пользовательского интерфейса jQuery.
После нажатия на специальную ссылку появится модальное диалоговое окно с некоторым загруженным содержимым (ajax) и внутри этого загруженного содержимогоновые ссылки / кнопки, которые загружают свои URL-адреса внутри одного и того же блока div, поэтому диалог по-прежнему загружается, но с новым содержимым.Проблема в том, что если вы ссылаетесь на эту ссылку (внутри недавно загруженного диалогового окна и на недавно загруженном веб-сайте), она работает как надо, но при втором щелчке она загружает URL-адрес дважды, а третий - 4 раза... Это растет экспоненциально с каждой новой ссылкой, загруженной в диалоге.Я проверяю это с помощью счетчика, хранящегося внутри $ _SESSION.
Это код Javascript:
var somedialog = $('<div></div>').dialog({
autoOpen: false,
resizable: false,
modal: true,
/*show: 'fade',
hide: 'puff',*/
closeOnEscape: true,
close: function(){
}
});
function openInDialog(url, title, width, height)
{
somedialog.empty();
somedialog.dialog("option", "width", width);
somedialog.dialog("option", "height", height);
somedialog.dialog("option", "title", title);
somedialog.load(url,{},function (responseText, textStatus, XMLHttpRequest)
{
somedialog.dialog('open');
}
);
//somedialog.load(url,{},function (responseText, textStatus, XMLHttpRequest){
// dialogdiv.somedialog('open');
//});
}
$('a.ajaxBuyItemDialog').on('click',function(){
openInDialog(this.href, this.title, 400, 300);
//prevent the browser to follow the link
return false;
});
Похоже, что другие люди с этим вопросом, но это не очень эффективное обсуждение: https://stackoverflow.com/questions/6471360/jquery-load-after-load-repeated-results-problem
Спасибоза вашу помощь!
РЕДАКТИРОВАТЬ: Это часть кода, который находится в загруженном скрипте:
$("#_BUYITEM_FORM").live('submit', function(){
$.ajax({ // create an AJAX call...
data: $(this).serialize(), // get the form data
type: $(this).attr('method'), // GET or POST
url: $(this).attr('action'), // the file to call
success: function(response){ // on success..
$("#_BUYITEM_CONTENT").html('<p class="AjaxLoaderImg"><span>Einen Moment bitte...</span></p>');
$("#_BUYITEM_CONTENT").html(response); // update the DIV
}
});
return false; // cancel original event to prevent form submitting
});
Без него я не могу заставить его обновить диалоговое окно с новымсодержание.