我很确定这是另一个 DOH!facepalm问题,但作为设计师而不是程序员,我需要一些帮助才能正确解决问题。
我拥有的是一个通过 jQuery .load 调用本地 .html 文件的索引文件。就像这样:(一些选项卡功能在这里不相关 - 因此链接目标调用)
<a href="#lightbox">Lightbox</a></li>
<div id=lightbox">
<div class="load">
<script type="text/javascript">
$('.load').load('examples/lightbox.html');
</script>
</div>
</div>
我还有一个外部 .js 文件,其中包含许多处理一些灯箱等功能的函数。标准<script src="js/typography.js" type="text/javascript"></script>
包含:
$(document).ready(function(){
$(".open-lightbox").on("click", function(){
$('.lightbox').css('display','block');
});
$('.close-lightbox').click(function(){
$('.lightbox').css('display','none');
});
});
我的问题是,如果外部调用的 .html 文件有任何依赖于 .js 文件的元素,即。灯箱弹出它不起作用。
就像是 :
<a href="#" class="open-lightbox">LightBox Link</a>
<div class="lightbox">
lightbox content
<a href="#" class="close-lightbox">Close</a>
</div>
如果我将 html 代码移动到索引页面而不是.load
,没问题,如果我将 JS 移动为内联<script>...</script>
而不是外部调用它,则相同。在这两种情况下都可以正常工作。
我的蜘蛛侠感觉告诉我,这与我的功能有关,而.load
不是按照我需要的顺序执行,但我的 javascript 复制/粘贴技能只能做到这一点。
谁能告诉我是否可以使这种组合起作用?我真的很感激。
编辑
也许我解释得不好,所以让我尝试发布一个更好的例子。如果我的索引代码如下,一切正常:我的灯箱按预期弹出。
<li><a href="#thistabid">Link to open Tab Content</a></li>
<div id="thistabid">
<--Tab Content below-->
<div class="somehtmlpage-load">
<a href="#" class="open-lightbox">LightBox Link</a>
<div class="lightbox">
lightbox content
<a href="#" class="close-lightbox">Close</a>
</div>
</div>
<--End Tab Content-->
</div>
单击该选项卡时,会显示“thisistabid”中的内容。无论内容是什么。
现在如果我这样做:
<li><a href="#thistabid">Link to open Tab Content</a></li>
<div id="thistabid">
<--Tab Content below-->
<div class="somehtmlpage-load">
<script type="text/javascript">
$('.somehtmlpage-load').load('examples/lightbox.html');
</script>
</div>
<--End Tab Content-->
</div>
灯箱不工作。lightbox.html 的内容是
<a href="#" class="open-lightbox">LightBox Link</a>
<div class="lightbox">
lightbox content
<a href="#" class="close-lightbox">Close</a>
</div>
与第一个示例中的 html 相同,一切正常。唯一的区别是 jQuery 加载而不是硬编码。
我所说的“如果外部调用的 .html 文件有任何依赖于 .js 文件的元素,即灯箱弹出窗口”的意思是,如果 html 是外部调用文件的一部分,则灯箱功能不起作用。如果它是硬编码的,它会按预期弹出。
乍一看,.on 似乎应该是解决方案,但最有可能我的实现是不合时宜的:/