我正在使用带有远程源的bootstrap 3模态对话框。 我的问题是我在这些远程源中使用外部JavaScript和脚本块。当我打开并关闭模式对话框然后重新打开它时,JavaScript会加载两次。
重新打开模态对话框时,如何禁止再次加载相同的JavaScript文件?或者如何在关闭Dialog时销毁加载的JavaScript?
的JavaScript :
$(function() {
$('[data-load-remote]').on('click',function(e) {
e.preventDefault();
var $this = $(this);
var remote = $this.data('load-remote');
if(remote) {
$($this.data('remote-target')).load(remote);
}
});
});
HTML :
<a href="#myModal" role="button" class="btn" data-toggle="modal"
data-load-remote="http://localhost/dashboard/myprices"
data-remote-target="#myModal .modal-body">My Salon (Preview)</a>
<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog"
aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel">Modal title</h4>
</div>
<div class="modal-body">
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
答案 0 :(得分:2)
您可以使用其他data-
属性来检查它是否已加载:
将isloaded="false"
添加到您的锚标记中,如下所示:
<a data-isloaded="false" href="#myModal" role="button" class="btn" data-toggle="modal"
data-load-remote="http://localhost/dashboard/myprices"
data-remote-target="#myModal .modal-body">My Salon (Preview)</a>
然后您可以使用$this.data('isloaded')
检查是否已加载。如果有,请离开那里,否则,加载它并设置如下标志:$this.data('isloaded', true)
。
这是一些JavaScript
$(function() {
$('[data-load-remote]').on('click',function(e) {
e.preventDefault();
var $this = $(this);
var remote = $this.data('load-remote');
if (!$this.data('isloaded')) {
if(remote) {
$($this.data('remote-target')).load(remote);
$this.data('isloaded', true)
}
}
});
});
更新,以便根据评论进行说明
来自custom data attributes的HTML5规范:
每个 HTML元素可以指定任意数量的自定义数据属性,具有任何值。
即。没有预定义的data-isloaded
,与没有预定义的data-load-remote
相同。您可以轻松地将其称为data-kylePromisesTheValueIsLoaded
。只要
这是传递给.data()
方法的字符串,然后它将读取/写入该属性的值。