【问题标题】:External page div load with jQuery element error带有 jQ​​uery 元素错误的外部页面 div 加载
【发布时间】:2012-12-18 19:13:19
【问题描述】:

如果有人比我更了解 jQuery(可能是 99%,因为这是我尝试此代码的第一周 :) 还剩一些时间,这是一个我真的需要回答的问题。抱歉,有些英文不正确。

你们中的一些人可能已经阅读了我提出的关于将外部页面内容放入 div 和 UI 选择幻灯片元素的其他问题,这些元素在此类加载的 div 中正确加载,这是该主题的延续,现在我希望解决这个问题我创建了一个新主题来收集这里的信息。主要问题是为什么 UI 滑块(选择元素)在通过 jQuery(在同一主页中)加载(从另一个页面中的 div)到 div 时不起作用。

这是我用来将内容加载到网站的代码:

load_script.js
$(document).ready(function(){
    $('#div_that_will_receive_content').load('from_page.html #from_div');
});

问题:问题以两种不同的方式出现。 1:当仅加载DIV时,滑块显示,div中的所有内容都显示并且div加载正确,除了滑块。滑块在加载时显示 0.1 秒,然后消失。 2:当整个网站加载(包括 ui 滑块)内容循环并且网站永远不会停止加载时,在浏览器控制台中检查时,25-30mb 会在几秒钟内加载。即使在这种情况下,滑块在加载时刻也可能仅显示 0.1 秒,并且由于站点的循环加载,滑块会闪烁。

Page_1.html

<html>
<head>
<script src="jquery-1.8.3.js" type="text/javascript"></script>
<script src="jquery-ui-1.9.2.js" type="text/javascript"></script>
<script src="load_script.js" type="text/javascript"></script>

<link href="jquery-ui-1.9.2.custom.css" rel="stylesheet" type="text/css" />

<script>
$(function() {
    $( "#slider" ).slider();
});
</script>
</head>
<body>

<div id="div_1">DIV 1 = This is where the content of div_2 should be</div>

</body>
</html>

Page_2.html

<html>
<head>
<script src="jquery-1.8.3.js" type="text/javascript"></script>
<script src="jquery-ui-1.9.2.js" type="text/javascript"></script>
 <script src="load_script.js" type="text/javascript"></script>

<link href="jquery-ui-1.9.2.custom.css" rel="stylesheet" type="text/css" />

<script>
$(function() {
    $( "#slider" ).slider();
});
</script>
 </head>
<body>

<div id="div_2">DIV 2 = This div containing a slide-select-element will be loaded to to     div_1</div>

</body>
</html>

load_script.js

<script>
    $(document).ready(function(){
        $('#div_1').load('Page_2 #div_2');
});
</script>

我对此仍有一些问题。现在的问题是,如果我将整个 Page2.html 加载到 Page1.html 中的 div 中,一切都会顺利进行。但是,如果我只是从 Page2.html 加载选定的 div,则幻灯片元素不会显示,但其余内容会显示(文本)。

这项工作和整个页面都会被加载,包括滑块:

<script>
    $(document).ready(function(){
        $('#div_1').load('Page_2');
});
</script>

这不起作用,滑块不显示,但其余内容会显示(文本):

<script>
    $(document).ready(function(){
        $('#div_1').load('Page_2 #div_2');
});
</script>

有人知道这取决于什么吗?

【问题讨论】:

  • #slider在哪里,你的js文件里真的有脚本标签吗?
  • 我没有写出滑块的代码和与之相关的所有脚本,我应该写的。

标签: java javascript ajax jquery


【解决方案1】:

删除第二页上的所有脚本导入-您只需要加载一次-每次加载load_script.js时-它都会导致无限循环,因为那是您的加载函数所在的位置。然后可以使用 .load() 的回调函数来初始化滑块。

$(document).ready(function(){
    $('#div_that_will_receive_content').load('from_page.html #from_div',function(){
         $( "#slider" ).slider();
    });
});

如果您还独立使用该页面,那将破坏您的第 2 页。如果是这种情况,那么您只需要从 page2 中删除以下内容

<script src="load_script.js" type="text/javascript"></script>

【讨论】:

  • 当我读到你的 9 个字的帖子时,我意识到脚本应该是 inte Page_2 是多么明显,现在我觉得自己是一个真正的初学者哈哈。我刚刚从 Page_2 中删除了 load_script 并且效果很好。如果您可能有更多时间,您也许可以更简单地解释一下回调函数的含义?非常感谢你的帮助! :)
  • 好吧,一旦加载成功完成,回调函数就会执行。所以如果有元素通过加载动态插入并且您需要操作它们,您必须等待它们首先插入 DOM。在 DOCS api.jquery.com/load. 中对此进行了很好的解释。如果您只是从第二页中删除 load_script.js,那么您不需要使用回调函数,因为您已经在 dom.ready 上初始化滑块第 2 页
  • 好的,我想我明白了,但我会检查那个文件。再次感谢您。
猜你喜欢
  • 1970-01-01
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
  • 2012-06-25
  • 2016-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多