Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.10.2011, 01:50
Интересующийся
Отправить личное сообщение для flytracer Посмотреть профиль Найти все сообщения от flytracer
 
Регистрация: 09.10.2011
Сообщений: 10

плохо работает jQuery ui dialog нужен совет
Написал такой код:
$(function() {
	   
       
       var index = "index.php?";
       var lin = $('#link_cu');
       	var log  = function(msg){
				console.log ? console.log(msg) : alert(msg);
			}
            
        $('#dialog').dialog({
					autoOpen: false,
                    
					buttons: {
						'Ok': function() { 
							$(this).dialog("destroy"); 
						}, 
						'Cancel': function() { 
							$(this).dialog('destroy'); 
						} 
					}
				});
            
	$('#link_cu').click(function(evtObj){
		
		evtObj.preventDefault();
		
		$.get(index+lin.attr('href'), {}, function(data){ 
		    $('#dialog').html(data).dialog('open');
            return false;
		},'html');
        
        
	});
 });

Окно вызывается, только для одного первого <a>, если закрываю то оно больше не открывается, и кнопки ок и cancel ничего не делают.
Что я не так сделал?
Ответить с цитированием
  #2 (permalink)  
Старый 09.10.2011, 11:17
Интересующийся
Отправить личное сообщение для flytracer Посмотреть профиль Найти все сообщения от flytracer
 
Регистрация: 09.10.2011
Сообщений: 10

Спасибо теперь работает для всех ссылок, но окно все равно запускается только один раз
Ответить с цитированием
  #3 (permalink)  
Старый 09.10.2011, 13:32
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Блин. Сразу не заметил
Вы унечтожаете диалог полностью, а потом пытаетесь открыть унечтоженный диалог при помощи опен. Неудивительно что вы неможете открыть то что несуществует

вместо $('#dialog').dialog('destroy'); // код уничтожает диалог
используйте $('#dialog').dialog('close'); //код закрывает диалог

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

p.s.
Если-же вы всё таки хотите уничтожать диалог через destroy, то будьте любезны и создавать его перед открытием
т.е. каждый раз вместо open применять всю эту бодягу .dialog({ autoOpen: true,buttons: {бла бла} });
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 09.10.2011 в 14:18.
Ответить с цитированием
  #4 (permalink)  
Старый 10.10.2011, 13:51
Профессор
Отправить личное сообщение для zebra Посмотреть профиль Найти все сообщения от zebra
 
Регистрация: 14.09.2011
Сообщений: 523

Сообщение от nasqad
$(this).dialog("destroy");

=> $('#dialog').dialog('destroy');
по кнопкам, this будет ссылаться на саму кнопку а не диалог в вашем варианте
$(this) будет ссылка на #dialog
Ответить с цитированием
  #5 (permalink)  
Старый 10.10.2011, 15:06
Интересующийся
Отправить личное сообщение для flytracer Посмотреть профиль Найти все сообщения от flytracer
 
Регистрация: 09.10.2011
Сообщений: 10

Вот я написал код для ссылки на чат, диалог работает хорошо
$('#chat').click(function(evtObj){
    
            evtObj.preventDefault();
    
          $('#chat_div').dialog({
		  			autoOpen: true,
                      
  				buttons: {
  						'Ok': function() { 
  							$(this).dialog('close'); 
  						}, 
  						'Cancel': function() { 
  							$(this).dialog('close');
  						} 
  					}
  				});
 
  		$.get($(this).attr('href'), {}, function(data){ 
  		    $('#chat_div').html(data).dialog('open');
 		},'html');
	});


и кнопки работают, и лишний раз не открывается.
Но вот второй код для ссылок из списка
$('.link_cu').click(function(evtObj){
    
            evtObj.preventDefault();
    
          $('#dialog_4').dialog({
		  			autoOpen: true,
                      
  				buttons: {
  						'Ok': function() { 
  							$(this).dialog('close'); 
  						}, 
  						'Cancel': function() { 
  							$(this).dialog('close');
  						} 
  					}
  				});
 
  		$.get($(this).attr('href'), {}, function(data){ 
  		    $('#dialog_4').html(data).dialog('open');
 		},'html');

	});


Вот в нем уже ссылки не работают, и если его не закрыть и нажать или еще раз на ту же ссылку или на какую другую из списка то он открывает еще один диалог а старый остается но уже пустым.
Ответить с цитированием
  #6 (permalink)  
Старый 10.10.2011, 19:25
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

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

Ты при каждом щелчке теперь создаёшь диалог понимаешь, СОЗДАЁШЬ а не открываешь. А при нажатии на кнопку ты его не унечтожаешь а только закрываешь, он неперестаёт существовать от того что ты его закрыл. При втором нажатии ты создашь ещё один диалог, не унечтожая старый. Ты плодищь диалоги как кроликов, причём содержимое диалога, кочует из одного диалога в другой.

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

Или пиши так.
В данном примере мы создаём машину чтобы попользоваться, а по окончанию использования взрываем её нафиг чтобы немешалась.

function createDialog(){
          $('#chat_div').dialog({
    			        autoOpen: true,                      
  				buttons: {
  						'Ok': function() { 
  							$(this).dialog('destroy'); 
  						}, 
  						'Cancel': function() { 
  							$(this).dialog('destroy');
  						} 
  					}
  				});
};
$('#chat').click(function(evtObj){
            createDialog();
            evtObj.preventDefault();
    
 
  		$.get($(this).attr('href'), {}, function(data){ 
  		     $('#chat_div').html(data);
                     createDialog();
 		},'html');
	});

Или так.

Тут мы создаём машину только однажды, когда надо заводим и едим, когда приехали глушим. И она стоит пока непонадобится. Как понадобится опять заводим и едим.

$('#chat_div').dialog({
			        autoOpen: false,                      
  				buttons: {
  						'Ok': function() { 
  							$(this).dialog('close'); 
  						}, 
  						'Cancel': function() { 
  							$(this).dialog('close');
  						} 
  					}
  				});

$('#chat').click(function(evtObj){
          $('#chat_div').dialog('open');
          evtObj.preventDefault();
               
  		$.get($(this).attr('href'), {}, function(data){ 
  		    $('#chat_div').html(data).dialog('open');
 		},'html');
	});
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 10.10.2011 в 20:40.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jquery не работает в цикле alexus jQuery 3 03.09.2011 14:49
Не работает аякс в jQuery Form Ticksy jQuery 4 19.07.2011 12:55
нужен совет! severmsk Общие вопросы Javascript 16 01.12.2010 17:32
Нужен совет по jQuery. bublik Общие вопросы Javascript 2 03.08.2010 14:31
Не работает jQuery меню с AJAX eugene1986 jQuery 0 08.07.2010 18:49