使用bootstrap在动态php循环中包含modal。通过在迭代中的每一行添加唯一字段来动态更改div ID,从而精彩地工作:
foreach($classes as $class => $details)
{
$unique = $class->['ID'];
$name = $class->['Name';
$description = $class->['Description';
?>
<button class="btn btn-xs" data-toggle="modal" data-target="#myModal<?php echo $sclassid ?>">
<?php echo $name ?></button>
<!-- Small modal -->
<div id="myModal<?php echo $sclassid ?>" class='modal fade bs-example-modal-sm' tabindex='-1' role='dialog' aria-labelledby='mySmallModalLabel' aria-hidden='true'>
<div class='modal-dialog modal-sm'>
<div class='modal-content'>
<?php echo $classDescription?>
<button type="button" class="btn btn-xs" data-dismiss="modal">Close</button>
</div>
</div>
</div>
如果您没有生成唯一ID(#myModal-somevalue),则每次点击都会打开模态的每个实例。哎哟。
无论如何 - 我可以将按钮设置为看起来像链接,但有没有办法使用类似这样的链接将相同的信息发送到bootstrap jscript代码:
<a href="javascript:void(0)" class="md-trigger" onclick="$('.bs-example-modal-sm').modal('show')"><?php echo $className ?>
添加data-target="#myModal<?php echo $sclassid ?>"
没有用。
是否有任何理由让这种或那种方式更好。
我期待您的见解和反馈。
关闭阅读Marijn Haverbeke的Eloquent Javascript ...
答案 0 :(得分:0)
为什么不设置-one-modal,并使用jQuery的ajax()将另一个页面注入模态容器,而不是循环遍历模式本身,不需要唯一的ID tomfoolery。
这里我是怎么做的(这是在ColdFusion中,所以#符号相当于PHP的变量标记) - 另请注意这是Bootstrap 2.1.0,但是有一些结构/类更改将使其在3.1.1中运行:
这里是启动模式的URL(这可以通过循环脚本输出,动态设置url参数以传递给包含模态内容的脚本):
<a href="/modal/showDocHistory_Modal.cfm?docPropID=#GetMetaData.docPropID#&File=#URLEncodedFormat(name)#" data-target="#histModal" data-toggle="modal" rel="tooltip" data-placement="left" title="Click to view document history" class="btn btn-mini ajax"><i class="icon icon-list-alt"></i></a>
接下来,您拥有模态的容器:
<!--- DIV container for history modal --->
<div class="modal hide fade" id="histModal" style="width:80%; margin-left:-40%;"></div>
最后,确保传递给模态的URL的一些jQuery是唯一的(否则,最后一次点击的链接将始终在下次启动模式时出现):
<!--- script to ensure ajax modal always loads currently clicked link --->
<script type="text/javascript">
$(document).ready(function() {
$.ajaxSetup({ cache: false });
$('[data-toggle="modal"].ajax').click(function(e) {
e.preventDefault();
var url = $(this).attr('href');
var target = $(this).data('target');
if (url.indexOf('#') == 0) {
$(target).modal('open');
} else {
$.get(url, function(data) {
$(target).html(data);
$(target).modal();
}).success(function() { $('input:text:visible:first').focus(); });
}
});
});
</script>
现在,你需要做的就是遍历你的HREF并提供参数来提供给包含你的模态内容的外部脚本(外部脚本将只有模态体标签,因为主模式容器将在调用脚本)。