因此,我有一个包含指向外部项目页面的链接的页面。这些项目的网页被加载到一个div通过函数:将包含外部javascript文件的外部html文件加载到div
function clickEv(foo) {
$('#loadContent').load('sub/'+foo+'.html').fadeIn('fast');
window.location.hash = foo;
}
这些项目的页面都在左边相同的模板,文字的div和右侧图像股利。我想要做的是包含一个图像div的滑块。该滑块是一个外部JavaScript文件:
$(function() {
var sliderUL = $('.imageBrowser').children('ul'),
imgs = sliderUL.find('img'),
imgWidth = imgs[0].width,
imgsLen = imgs.length,
current = 1,
totalImgsWidth = imgsLen * imgWidth;
$('#sButtons').find('div').on('click', function() {
var direction = $(this).data('dir'),
loc = imgWidth;
// update current value
(direction === 'next') ? ++current : --current;
// if first image
if (current === 0) {
current = imgsLen;
loc = totalImgsWidth - imgWidth;
direction = 'next';
} else if (current - 1 === imgsLen) {
current = 1;
loc = 0;
}
transition(sliderUL, loc, direction);
});
首先,我发现在无序列表图像格“ImageBrowser的”内,然后确定在那里我有格“sButtons”中的上一个和下一个按钮下去。 同样,所有项目页面都使用与div和列表相同的模板。
我试着在项目页面文件的开头附上<script>
标签,并在clickEv(foo)
函数中包含.getScript()
,将其包含在此slider.js文件中。但是,它似乎没有与第一,我相信这是因为div的imageBrowser和sButtons不存在,但原始的HTML文件内存在吗?如果我再次按下相同的项目页面链接,第二次加载文件,滑块按预期工作。每个项目页面都是一样的,例如我打开project-page1 - 滑块不起作用,我打开project-page2 - 滑块不起作用,我再次打开project-page1 - 滑块作品,我再次打开project-page2 - 滑块作品。如果我现在切换回page1,滑块仍然可以工作,但是如果我打开page3,它不会再工作。
我在尝试一些不可行的或我做错了什么?
//编辑
我想我现在的工作,问题是,被加载的内容之前得到执行的脚本。因此,试图从元素获取信息的变量仅在从缓存中加载时才开始工作。
我所做的是将onload="$.getScript('src/slider.js')"
添加到项目页面中的第一个<img>
文件。因此脚本在所需的元素被加载后被执行!感谢所有关闭你,我仍然会考虑iframe的表现。
您应该避免以这种方式动态加载html内容,恕我直言。它会导致太多的头痛和差异。你有没有考虑过放入并使用'iframe'?我知道iframes吸吮,但他们实际上是为加载外部html内容而设计的。 – 2012-04-04 13:57:12
我没想过,但我想我可以试试看。问题是项目页面链接显示在直接位于'loadContent'下的div中,它被设置为'display:none;'。然后将想要的页面带入淡入淡出效果,并且看起来非常清晰,但是我认为iframe是更明智的决定,谢谢。 – 2012-04-04 14:07:49
当然。一个'iframe'可能不适合你(这就是为什么我没有提供它作为答案)。有人可能会更直接地回答你的问题。 – 2012-04-04 14:10:24