Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.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 - Fatal编程技术网

Javascript 在上隐藏动态元素函数。';隐藏';)

Javascript 在上隐藏动态元素函数。';隐藏';),javascript,jquery,Javascript,Jquery,我对以下函数有问题。我正在动态创建一个引导模式(常规div),我想附加一个通过变量传递的函数(witch工作正常)并在其上运行。(“hide”),但它会在模式打开时立即启动($(modal).on('hide',windowclose_function);)。有什么我遗漏的吗 谢谢 function openModalFromUrl(modal_url, close_function = function(){}) { var token = $("meta[name='csrf-to

我对以下函数有问题。我正在动态创建一个引导模式(常规div),我想附加一个通过变量传递的函数(witch工作正常)并在其上运行。(“hide”),但它会在模式打开时立即启动($(modal).on('hide',windowclose_function);)。有什么我遗漏的吗

谢谢

function openModalFromUrl(modal_url, close_function = function(){}) {

    var token = $("meta[name='csrf-token']").attr("content"); 

    $.ajax({
        data: { 
            '_token': token,
        },
        url: modal_url,
        type: 'POST',
        success: function(html) {

            // create a new modal div
            var modal = document.createElement("div");
            $(modal).addClass('modal fade');
            $(modal).attr( "role", "dialog" );

            $('body').append(modal);

            // place response in the modal
            $(modal).html(html)

            // open the modal
            $(modal).modal('show'); 

            // THIS FIRES IMMEDIATELY
            $(modal).on('hide', window[close_function]() );

        },

        error: function() {
            bootbox.alert('Error');  
        }

    });

}
根据需要,您应该使用
hidden.bs.modal
事件。也不需要检查函数的
窗口
对象,只需传递它即可

$('myModal').modal('show');
var close_函数=函数(){
console.log('closed');
}
$('#myModal').on('hidden.bs.modal',close_函数)

&时代;
情态标题
一个好身体&hellip

接近 保存更改
根据您应该使用的
隐藏.bs.modal
事件。也不需要检查函数的
窗口
对象,只需传递它即可

$('myModal').modal('show');
var close_函数=函数(){
console.log('closed');
}
$('#myModal').on('hidden.bs.modal',close_函数)

&时代;
情态标题
一个好身体&hellip

接近 保存更改
问题在这一行:-

$(模态).on('hide',window[关闭函数]());
将其更改为:-

$(模态).on('hide',window[close_function]);
解释:-

在JavaScript中,当我们提供一个函数作为引用时,我们使用它的名称而不使用任何括号

i、 e.“我的函数”不是“我的函数”

作为“my_func()”将函数的结果作为引用而不是函数本身


所以只要去掉括号,你的问题就解决了。

问题就在这一行:-

$(模态).on('hide',window[关闭函数]());
将其更改为:-

$(模态).on('hide',window[close_function]);
解释:-

在JavaScript中,当我们提供一个函数作为引用时,我们使用它的名称而不使用任何括号

i、 e.“我的函数”不是“我的函数”

作为“my_func()”将函数的结果作为引用而不是函数本身


所以只要去掉括号,你的问题就解决了。

谢谢大家的回答。我找到了解决办法。 由于模态是动态生成的,我必须将调用更改为:

 $('body').on('hide.bs.modal', modal, window[close_function] );

现在它就像一个符咒。再次感谢大家

谢谢大家的回答。我找到了解决办法。 由于模态是动态生成的,我必须将调用更改为:

 $('body').on('hide.bs.modal', modal, window[close_function] );

现在它就像一个符咒。再次感谢大家

它不应该是
$(模态).on('hide',close_函数)
$(模态).on('hide',window[close_function])
remove
()
只需传递函数引用,不应该是
$(模式)。在('hide',关闭函数)
$(模态).on('hide',window[close_function])删除
()
只需传递函数引用感谢快速回答。。。问题是函数可能有不同的名称。我使用按钮将函数名称传递给模式(例如data callback=“refresh_list”),我想调用该函数,但您将其传递给openModalFromUrl,您的本地参数始终存在close_函数我有一个打开openModalFromUrl函数的动态按钮。这个按钮有一个数据url,它是ajax模式的url,还有一个数据关闭函数,它是模式关闭时应该运行的函数的名称。我不知道是否可以通过按钮传递函数引用?`$('body')。on('click','.modal_url',function(){openModalFromUrl($(this.data('url'),$(this.data('close_function'));})`谢谢你的快速回答。。。问题是函数可能有不同的名称。我使用按钮将函数名称传递给模式(例如data callback=“refresh_list”),我想调用该函数,但您将其传递给openModalFromUrl,您的本地参数始终存在close_函数我有一个打开openModalFromUrl函数的动态按钮。这个按钮有一个数据url,它是ajax模式的url,还有一个数据关闭函数,它是模式关闭时应该运行的函数的名称。我不知道是否可以通过按钮传递函数引用?`$('body')。on('click','.modal_url',function(){openModalFromUrl($(this.data('url'),$(this.data('close_function'));})`谢谢你的回答。。。但它似乎不起作用。。。下面是我现在已经更改和测试的内容,它似乎根本不会调用hide上的函数(我尝试了'hide'和'hidden.bs.modal'事件)
var test_function=function(){alert('aaa');}//在close$(modal)上重置函数。on('hide.bs.modal',test_function);
看看这里……如果它仍然不起作用……那么请检查你的引导js和css文件。这就是问题所在,事实上div是动态创建的,所以我不得不在('hide.bs.modal',modal,window[close_function])上使用
$('body')
将此标记为答案,谢谢!!!谢谢你的答案…但它似乎不起作用…以下是我现在更改和测试的内容,它似乎根本不会在hide上调用函数(我尝试了“hide”和“hide.bs.modal”事件)
var test_function=function(){alert('aaa');}//在close$(modal).on('hide.bs.modal',test_function)上重置函数;
在这里查看一下……如果仍然不起作用