我目前正在使用jQuery和jQueryUI进行编码。我正在使用jQuery Dialog Widget。 (jQuery API - Dialog Widget)
我打开一个对话框并使用show-method,代码是这样的:
$("#dialog").dialog({
dialogClass: 'myclass',
height: 'auto',
width: 'auto',
modal: true,
resizable: false,
draggable: false,
buttons: [{ text: "Ok", click: function () { $(this).dialog("close"); } }],
show: { effect: "slide", duration: 1000, direction: "right", finish: function () { $(".myclass.ui-dialog").css("position", "fixed"); console.log("done after effect"); } },
position: { my: "right top", at: "right top", of: window },
});
重要的部分是那里的show:
。除“finish”参数外,所有这些都有效。在完成此效果后,还有其他方法可以添加函数吗?
我只想修改对话框,以便在滚动时保持其位置。 我试图覆盖css类并且它可以工作,但是当效果运行时,显示被破坏(显示在左边而不是右边),就在它之后它是正确的,所以我想尝试在效果之后添加它
那么,有一个好方法吗?
答案 0 :(得分:2)
look here第二个答案,因为第一个人不再工作了
open: function () {
$(this).parent().promise().done(function () {
console.log("[#Dialog] Opened");
});
}
答案 1 :(得分:0)
我在对话框中添加了autoOpen: false,
选项,并在创建对话框时添加了以下几行:
$("#dialog").dialog('open');
$(".achievement_dialog.ui-dialog").wait(1000, function () { $(this).css("position", "fixed"); console.log("done after effect"); });
方法wait()是一个自编码的jQuery函数,我为等待函数的情况创建了一次:
$.fn.wait = function (timeout, callback) {
/// <summary>
/// Timeout for animations or show/hide-effects. Put the functions that should be executed after it in the callback function,
/// if they are no animations (or the won't wait).
/// </summary>
/// <param name="timeout" type="int">Time in miliseconds to wait</param>
/// <param name="callback" type="Function">A function to execute after the time</param>
/// <returns type="jQuery" />
if (typeof timeout == 'undefined')
timeout = 1000;
$(this).animate({ opacity: 1.0 }, timeout, callback);
return this;
};
如果我使用与节目动画时间相同的等待时间,这对我有用。但我会看看JohnnyAWs的回答。听起来更好。