我将 Jquery Tools 的 Overlay 放在我的站点中,以在多个叠加层中显示项目的信息。这工作得很好,但我一直在尝试“自动化”代码来读取新项目并将它们加载到覆盖中。发生的事情看起来不错,但无论我点击哪个项目,覆盖总是加载第一个项目的内容......
我做了很多谷歌搜索和复制粘贴才能走到这一步,我(还)不是一个程序员,我希望代码不会吓到你们...... ;-)
无论如何,这是一个链接:http ://www.wgwd.nl/test
如果您单击“项目”,则会打开一个正常的 div,加载它找到的所有项目(现在是两个)。当您单击一个时,它会在 3 个叠加层中打开该内容。如前所述,不幸的是,它总是加载相同的内容,而与您单击的项目无关。
我试图为 JScript 分配一个唯一的函数名称(使用项目文件名中的 php 生成),但这似乎不起作用。
有任何想法吗?这是我的代码:
<?
//reads projectfolder and distills
//a basename out of the project description.txt
$textfiles = glob('content/projects/*.txt', GLOB_BRACE);
foreach ($textfiles as $textfile) { ?>
<div id="details"> <?
$pad = pathinfo ($textfile);
$base_name = basename($textfile,'.'.$pad['extension']);
// the link that opens the overlays. Don't think the "id" tag is nescessary
echo '<a id="'.$base_name.'" href="#" onclick="'.$base_name.'()"><img src="'.$base_name.'/main.jpg"/></a>' ?>
<!-- defines overlay, hidden by default -->
<div id="dragwindow1" class="overlay ol1">
<a class="close"></a>
<?
include ('content/projects/'.$base_name.'/content.txt');
?>
</div>
</div>
<?
// the description of each project
include ($textfile);
?>
<script>
// within the foreach open all overlays with function name $base_name
var <?=$base_name?> = function () {
$("a[rel]").each(function() {
$(this).overlay().load();
});
}
</script>
<hr />
<? } //end foreach ?>
</div>
<!-- somehow, without defining these links, the whole 'open all overlay' thing doesn't work -->
<a rel="div.overlay:eq(0)" type="button" style="display: none">first</an>
<a rel="div.overlay:eq(1)" type="button" style="display: none">second</a>
<a rel="div.overlay:eq(2)" type="button" style="display: none">third</a>
<script type="text/javascript">
$(function projects() {
// positions for each overlay
var positions = [
[120, '15%'], //uppper left, #1
[70, '60%'], // lower left, #2
['60%', '40%'], // lower right, #3
];
// setup triggers
$("a[rel]").each(function(i) {
$(this).overlay({
// common configuration for each overlay
oneInstance: false,
// setup custom finish position
top: positions[i][0],
left: positions[i][1],
});
});
});
</script>
提前谢谢!
编辑:我编辑了代码以省略所有不相关的内容问题仍然存在:Javascript 仅返回 foreach 循环中第一次调用的内容。无论如何为PHP中的每个循环生成多个javascript实例?