Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 事件以等待对话框消失_Javascript_Jquery_Html_Knockout.js - Fatal编程技术网

Javascript 事件以等待对话框消失

Javascript 事件以等待对话框消失,javascript,jquery,html,knockout.js,Javascript,Jquery,Html,Knockout.js,在我正在使用Knockout.js处理的模式对话框表单中,“Submit”按钮触发一个方法,该方法应该隐藏对话框,然后设置变量的值 self.updateSubTask = function(subTask) { ... $('#subTaskDialog').modal('hide'); self.selectedSubTask(null); }; 调用此函数时,隐藏过程开始-对话框本身被删除-但在完成之前停止,灰色背景无限期地持续存在。经过一些调查,很可能是因为随后

在我正在使用Knockout.js处理的模式对话框表单中,“Submit”按钮触发一个方法,该方法应该隐藏对话框,然后设置变量的值

self.updateSubTask = function(subTask) {
    ...
    $('#subTaskDialog').modal('hide');
    self.selectedSubTask(null);
};
调用此函数时,隐藏过程开始-对话框本身被删除-但在完成之前停止,灰色背景无限期地持续存在。经过一些调查,很可能是因为随后调用设置
self.selectedSubTask
的值中断了隐藏“动画”。不幸的是,由于对话框的设置方式,模式调用必须在更改为
selectedSubTask
之前进行。我尝试了以下方法:

_.defer(function() { self.selectedSubTask(null); })
$('#subTaskDialog').queue(function() { self.selectedSubTask(null); });
不幸的是,这两种方法都不起作用,行为也是一样的


我认为一个合理的做法是监听对话框何时被隐藏,并在该事件处理程序中包含
selectedSubTask
调用。然而,我很难找到实现这一目标的解决方案。任何关于如何做到这一点的建议,或任何其他实现我最终目标的方法,都将不胜感激。干杯

只需将函数绑定到模式隐藏的事件(此事件称为
hidden.bs.modal
):

hidden.bs.modal
上的引导文档中:

self.updateSubTask = function(subTask) {
    $('#subTaskDialog').modal('hide');

    // capture the modal's "hidden" event
    $( "#subTaskDialog" ).on('hidden.bs.modal', function(){
        self.selectedSubTask(null);
    });
};
当模式对用户完成隐藏时(将等待CSS转换完成),将触发此事件

还有一个
hide.bs.modal
事件,以防更适合您所需的功能。从引导文档中:

调用hide实例方法后,将立即触发此事件


你尝试过问题中的解决方案吗?我尝试过,但不幸的是,两者都没有帮助。不过,为这些建议干杯!谢谢你的回答,当我明天再次访问代码时,我会尝试一下,并让你知道它是否有效。