我正在开发一个小型网站(刚刚开始使用Zurb Foundation
)并制作了一个基本的网格布局,其中包含大型都市风格的div缩略图(页面上有~10个缩略图)。
我希望为用户添加此处的交互,即当用户点击任何这些缩略图时,会显示一个模态窗口,显示有关所点击的特定项目的更多信息。 (有点类似于我们大量可用的图片库灯箱插件)
但是,我想知道从以下两个方面实现相同目标的更好方法是什么。我的模态弹出对话框的内容是否应该在一个单独的html中,我应该在用户点击时通过ajax获取它们?
或者我应该隐藏这些部分并在用户点击时显示它们?
每个部分类似于项目名称,点击它显示项目描述(不同的项目可能有视频,图像,描述等。)
无论上面哪种更好的方法,最好查看一个关于如何显示模态弹出窗口的示例(考虑到它应该是最好可以应用于所有缩略图而不是做的事情)为每个缩略图分隔各个处理程序)
答案 0 :(得分:0)
最好的方法是将这些对话放在一个单独的文件中,并在用户点击某些内容时通过ajax加载它们。这将使事情更容易管理,他们将更有条理。
如果您将html存储在隐藏的div中,可能会浪费资源,因为用户不会在该页面加载中使用所有对话框。您可能还很难保持代码是最新的,因为您必须在隐藏的div部分更新它,然后在外部文件部分中更新它(如果您同时使用它们)。
我的建议是在php类/函数中使用所有html(或使用php MVC框架)并在需要使用它时从那里加载它。这样,您只需要从一个位置更新它以在整个站点上进行更改。对于AJAX加载,以JSON格式加载html,然后您可以在JSON中添加其他变量(这将使代码更有条理),例如外部脚本和CSS文件以及状态指示器。
答案 1 :(得分:0)
这是一个独立的例子。运行后,请注意以下事项:
<head>
标记img
类的元素时触发点击事件,(2)通过jQuery获取该特定img的ID $('#dlgID').html(data_received_from_PHP);
close:
部分中)要运行这个简单示例,您需要两个文件:
文件1:TEST.PHP
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
<style>
</style>
<script type="text/javascript">
$(document).ready(function() {
$('.img').click(function() {
var iid = $(this).attr('id');
//alert('You clicked ID: ' + iid);
$.ajax({
type: "POST",
url: "yogibear.php", // "source.php",
data: "iid="+iid,
success: function(data) {
//alert('AJAX recd: ' +data);
$('#moddlg').html(data);
$('#moddlg').dialog('open');
} //END success fn
}); //END $.ajax
});
$('#moddlg').dialog({
autoOpen: false,
modal: true,
width: 400, //default is 300
title: 'This is yer dialog:',
buttons: {
'Click Me': function() {
$(this).dialog('close');
}
},
close: function() {
alert('Dlg is closing... I can do more stuff in here, including running another AJAX call');
}
});
}); //END $(document).ready()
</script>
</head>
<body>
<img id="i-1" class="img" src="http://placehold.it/140x100" />
<img id="i-2" class="img" src="http://placehold.it/140x100" />
<img id="i-3" class="img" src="http://placehold.it/140x100" />
<img id="i-4" class="img" src="http://placehold.it/140x100" />
<div id="moddlg"></div>
</body>
</html>
文件2:YOGIBEAR.PHP
<?php
$x = $_POST['iid'];
die('PHP file recd: ' . $x);
//Of course, this is where you receive the img id sent via AJAX
//and look up stuff in MySQL or etc, then return the results
//simply by putting it all into a variable and ECHOing that
//variable. Or, you can use JSON to echo an array - but make
//sure to look up a couple of examples as you must add another
//couple of params to the AJAX code block