我有一个xpage(可通过网络浏览器查看),上面有许多<xe:dialog...>
控件,导致出现了引导模式对话框。
我想在任何对话关闭时运行一些客户端脚本。
所以我尝试了..
$('.modal').on('hide.bs.modal', function() { ...}
但是,这没有用,我怀疑是因为在加载xpage时,实际上没有任何具有'modal'类的元素,直到打开一个元素为止。然后部分刷新将注入相关的HTML。
因此,我尝试在模式打开时(在xpages onShow事件中)在事件的上方运行该行,但是也没有触发。我猜事件可能是“模式打开时但在显示之前”,这意味着元素也不会在屏幕上显示。
因此,我还尝试了(破解,修改)2秒的setTimeout以允许模式首先显示,但还是没有运气。
..问题是..
使用xpages引导程序模式,通过标准的xe:dialog控件,如何在模式关闭/隐藏时附加将运行的客户端javascript事件?
答案 0 :(得分:1)
您可以使用事件委托将侦听器绑定到(不存在的)模态的父元素,并在与该父元素中与.modal
选择器匹配的元素上单击时触发函数:
$(document).on("hide.bs.modal", ".modal", function () {...});
答案 1 :(得分:1)
我做类似的事情,在一个模式上选择一个按钮,关闭所说的模式,然后根据被点击的按钮,打开下一个模式。除了这样做,您是否可以用相同的方式运行脚本?
var
currentModal = $(this);
//click next
currentModal.find('.btn-close').click(function(){
currentModal.modal('hide');
OTHER STUFF?
编辑-我的完整代码:
<script type="text/javascript">
$("div[id^='myModal1']").each(function(){
var
currentModal = $(this);
//click next
currentModal.find('.btn-next').click(function(){
currentModal.modal('hide');
currentModal.closest("div[id^='myModal']").nextAll("div[id^='myModal3']").first().modal('show');
});
//click prev
currentModal.find('.btn-prev').click(function(){
currentModal.modal('hide');
currentModal.closest("div[id^='myModal']").nextAll("div[id^='myModal2']").first().modal('show');
});
});
$(window).on('load',function(){
$('#myModal1').modal('show');
});
</script>