Javascript 在上隐藏动态元素函数。';隐藏';)
我对以下函数有问题。我正在动态创建一个引导模式(常规div),我想附加一个通过变量传递的函数(witch工作正常)并在其上运行。(“hide”),但它会在模式打开时立即启动($(modal).on('hide',windowclose_function);)。有什么我遗漏的吗 谢谢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
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)上重置函数;
在这里查看一下……如果仍然不起作用