Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Jquery диалоговые окна (https://javascript.ru/forum/jquery/14163-jquery-dialogovye-okna.html)

4ydik 03.01.2011 21:15

Jquery диалоговые окна
 
Добрый день))) Опять пристаю ко всем со своими глупыми вопросами, вместо того, чтобы подумать, но:

$('#clickit').button().click(function(){
    $('#box').dialog('open');                

    $('#box').dialog({ 
        autoOpen: false, 
        width: 640, 
        height: 480, 
        buttons: { 
            "Ok": function() { 
                alert("dialog2");
            }, 
            "Cancel": function() { 
                $(this).dialog("close"); 
            } 
        } 
    }); 
});


Диалоговое окно запускается только после второго нажатия, но если добавить перед этой функцией:

$('#box').dialog({ 
    autoOpen: false, 
    width: 640, 
    height: 480, 
    buttons: { 
        "Ok": function() { 
            alert("dialog1");
        }, 
        "Cancel": function() { 
            $(this).dialog("close"); 
        } 
    } 
});

то диалоговое окно запускается сразу после первого нажатия, как избавится от лишнего текста?

UnderShot 03.01.2011 21:46

$('#clickit').button().click(function(){ 
    $('#box').dialog({
        autoOpen: false, 
        width: 640, 
        height: 480, 
        buttons: { 
            "Ok": function() { 
                alert("dialog2");
            }, 
            "Cancel": function() { 
                $(this).dialog("close"); 
            } 
        } 
    });
    $('#box').dialog('open');
});
Так попробуйте.

chosen 05.01.2011 19:09

$('#box').dialog({
	autoOpen: false,
	width: 640,
	height: 480,
	buttons: {
		"Ok": function() {
			alert("dialog2");
		},
		"Cancel": function() {
			$(this).dialog("close");
		}
	}
});

этот код является инициализацией диалогового окна
$('#box').dialog('open');

а этот код является открытием(отображением) предварительно синициализированого диалогового окна

поэтому при первом клике $('#box').dialog('open'); несрабатывает поскольку еще не было инициализации после чего происходит инициализация
при втором клике окно инициализировано и $('#box').dialog('open'); срабатывает

советую вынести код инициализации из обработчика события click
либо поместить в условие "была ли инициализация":
$("#clickit").button().bind("click", function(event) {
	var $box = $("#box");
	if ($box.data("isInitialized") == null) {
		$box.dialog({
			autoOpen: true,
			width: 640,
			height: 480,
			buttons: {
				"Ok": function() {
					alert("dialog2");
				},
				"Cancel": function() {
					$box.dialog("close");
				}
			}
		});
		$box.data("isInitialized", true);
	} else {
		$box.dialog("open");
	}
});

4ydik 05.01.2011 19:12

Спасибо, уже решил проблемку))) Примерно так же только без проверки isInitialized


Часовой пояс GMT +3, время: 19:50.