事件 show.bs.modal 在 .show() 上为内部模态元素触发
Posted
技术标签:
【中文标题】事件 show.bs.modal 在 .show() 上为内部模态元素触发【英文标题】:Event show.bs.modal fired on .show() for inside-modal elements 【发布时间】:2018-12-02 09:34:49 【问题描述】:我刚刚意识到,事件 show.bs.modal 不仅会在显示模态本身时触发,而且还会在每次为模态内的元素调用 .show() 方法时触发。
事件处理程序的附加方式如下:
$('#modalName').on('show.bs.modal', function(event) ... );
关于如何确保此处理程序中的代码仅在模态显示时触发的任何想法?
尤其是当您在模式中使用 formValidator.io 时会出现问题(一旦表单字段验证失败,它会为元素调用 .show())
【问题讨论】:
【参考方案1】:有一种解决方法 - 检查 event.relatedTarget 调用的 .show() 并在无意中调用它时简单地停止代码运行 - 例如:
$('#modalName').on('show.bs.modal', function(event)
if (!$(event.relatedTarget).parents(this).length) // checks if event has been executed by running .show() from outside the modal
return false; // this will terminate and rest of the code will not be executed
... // other things you need to do on the event handler
);
但这只是一种解决方法 - 任何其他建议,这将使该解决方案更加优雅,非常受欢迎。
【讨论】:
以上是关于事件 show.bs.modal 在 .show() 上为内部模态元素触发的主要内容,如果未能解决你的问题,请参考以下文章
如何选择“.on show.bs.modal”内的触发按钮[Bootstrap modal]