1

在我的网站中,我有一个简单的导航栏,点击不同的项目会导致主要内容发生变化。从技术上讲,所有内容都在一个文件“main.html”中完成,该文件包含所有内容,我使用 jquery 函数“load”动态加载其他 html 文件以将其放置在 main.html 中。只要我嵌入的这些 html 文件中没有 javascript,它就可以正常工作。但是我想嵌入一个文件,其中也包含 javascript 代码,应该在 $(document).ready 上执行。但这永远不会发生 - javascript 中没有错误,它永远不会被执行。我想这是因为我只更改了“main.html”的 DOM,然后不会触发“onReady”事件。有人可以告诉我什么是获得所需行为的最佳方法吗?将 javascript 放在“main.html”中会导致工作正常,但这对我来说是没有选择的。

提前致谢!

更新:问题已解决 问题已解决。当我在 onReady() 事件之外调用 javascript 时(正如 Loic Coenen 所建议的那样),它的工作原理与预期的一样。我还删除了缠绕的标签。非常感谢所有帮助过我的人!

4

2 回答 2

1

你在main.html其中包含一个头,一个身体。问题可能是,当您加载页面时,您的其他页面也有头部和正文等,如果您正在加载到 div,它应该只是代码,也可以是 javascript,但没有头部或正文。但如果你抗拒,这就是你的解决方案

$("#loadnewpagebttn").load(location.href+" foobar ",function(){
    $.getScript("js/yourscript.js"); 
});

您需要为该页面创建一个脚本文件并加载它。无论如何,内联脚本都是一个坏习惯

完整示例:

jQuery.getScript( url, [ success(data, textStatus) ] )
url - A string containing the URL to which the request is sent.

success(data, textStatus) - A callback function that is executed if the request succeeds.

$.getScript('ajax/test.js', function() {
  alert('Load was performed.');
});

http://api.jquery.com/jQuery.getScript/

于 2013-09-01T09:56:20.557 回答
1

您可以触发自定义事件来通知您的other.html脚本树已加载。我还没有尝试过,但我会使用类似的东西:

在 main.html 中:

$('#div_to_load').load('other.html',{},function(){
    $('#div_to_load').trigger('loaded')
})

在其他.html

$('#div_to_load').on('loaded', function(){
     // Code to execute  
})

我不知道这是否可以解决问题。

编辑:我认为直接包含在您的 javascript 中other.html无论如何都会执行。

于 2013-09-01T10:10:18.337 回答