2013-04-10 4 views
0

У меня есть меню, и каждая ссылка в меню открывается с помощью модального диалога. Я пытаюсь избежать создания одного и того же диалога каждый раз, когда я нажимаю ссылку более одного раза.Не открывайте тот же диалог каждый раз, когда нажимается ссылка.

Я попытался проверить

if(outputHolder.hasClass('ui-dialog-content:visible')){return false;} 
$("body").append(outputHolder); 
outputHolder.load($this.attr("href"), null, function() {  
outputHolder.dialog(

в противном случае он будет отображаться диалоговое окно ..

Любые предложения ??

полный код

http://jsfiddle.net/6qgTr/5/

+1

Ничего не происходит, когда я нажимаю на ссылку Поиск в скрипку. Что-то должно произойти? –

+0

, так что вы должны сказать, что хотите использовать различные модальные всплывающие окна для каждого меню? Fiddle больше не работает –

+0

Я говорю, что каждый раз, когда я нажимаю на поиск, он создает новое диалоговое окно. Поэтому им интересно, как избежать этого поведения, и чтобы диалоговое окно всплывало всего лишь 1 раз, когда нажимается ссылка. –

ответ

1

Вы хотите, чтобы только первый раз, отображается диалог Аякс вызова сделано, но на последующих кликах, диалоговое окно перерисовано без вызова Ajax переделывается, правильно?

Если это так, я думаю, вам сначала нужно избавиться от следующего кода, потому что он удаляет элементы для диалога, когда он закрыт. Без него элементы останутся, но будут скрыты.

close: function(event, ui) { $(this).remove(); } 

Вам также необходимо будет отслеживать элементы диалога div, чтобы вы могли их повторно использовать. Для этого вы можете использовать метод .data().

function openDialog($dialogDiv) { 
    $dialogDiv.dialog({ 
     // options, but not including 'close' 
    }); 
} 

function loadEmployeesShow(link) { 
    var $link = $(link), 
     $dialogDiv = $link.data('dialogDiv'); 
    if (!$dialogDiv) { 
     console.log('creating new dialog'); 
     $dialogDiv = $('<div>'); 
     $link.data('dialogDiv', $dialogDiv); 
     $dialogDiv.load($link.attr('href'), function() { openDialog($dialogDiv); });  
    } else { 
     console.log('reusing existing dialog'); 
     openDialog($dialogDiv); 
    } 
}; 

jsfiddle

0

Вы должны начать с создания DIV в ваш HTML код, который будет использоваться в качестве основы диалога, а не создавать его на лету. Затем вы можете открывать и закрывать этот же диалог, а не создавать новый каждый раз.

Также оставляйте свой код JavaScript отдельно от вашего HTML.

В настройках вашего диалога первый параметр, который у вас есть, - bgiframe: true, это недействительный вариант для диалога.

Вы не собираетесь быть в состоянии загрузить диалоговое окно с данными из https://www.google.com.ar

Цитирование jQuery ajax page

Имея в браузере ограничения безопасности, большинство запросов «Ajax» могут быть одной и той же политики происхождения; запрос не может успешно извлекать данные из другого домена, субдомена или протокола.

Вам нужно будет указать на скрипт на своем собственном сервере, который будет делать то, что вам нужно.

I created a new fiddle with what I think you want.

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