0

如果我有一个执行代码的按钮

$('#main').load('welcome.html');

welcome.html我有一个执行代码的按钮

$('#main').load('otherpage.html');

无论该函数是在父文件的 HTML 代码还是子文件的 HTML 代码上,Javascript 都不会执行。

如何让 Javascript 函数从外部加载的 HTML 文件中工作?

编辑 这里有更多的样本......

主页:

<body>
    <div id="main"></div>
</body>

<script>
    document.onLoad(){
        $('#main').load('welcome.html');
    }

    function show(file){
        $('#main').load(file+'.html');
    }
</script>

welcome.html页:

<a href="javascript:show(test)">Test</a>

...但是,当单击“测试”按钮时,test.html不会将其加载到主 div 中。

编辑 2

这是当前状态和问题所在 - 确切地说。

我已将代码的骨架上传到 PasteBin

单击“网格”按钮时,内容会发生变化,页脚也会发生变化。

但是,具有基于 Javascript 的 URL 的页脚出现了错误:

Uncaught SyntaxError: Unexpected token ILLEGAL

...尝试访问该1i.html页面时。

4

3 回答 3

1

test变量和'test'字符串之间有区别:

<a href="javascript:show(test)">Test</a>

大概应该是:

<a href="javascript:void show('test')">Test</a>
于 2013-02-05T23:50:22.697 回答
0

检查jQuery.live()jQuery.on()

也许您的事件处理程序是错误的。当您通过 load() 或 ajax() 导入新标记时,您必须从新文档初始化处理程序。最简单的方法是使用 jQuery.on 或 jQuery.live() 而不是 jQuery.click()。

$('MYBUTTON').live('click', function(){
    $('#main').load('your_url.html')
})

或使用回调函数(重新)初始化按钮事件。

更好的解决方案是:只需将 target_url 添加到按钮 rel 属性...

<button rel="YOUR_URL.html">Open Page</button>

$('button[rel]').live('click', function(){
    $('#main').load($(this).attr('rel'));
})
于 2013-02-05T23:47:08.897 回答
0

重要的是要了解当通过 AJAX 将脚本加载到主页已经通过的页面时document.ready。因此,您加载的任何代码都会立即触发。

如果您加载的代码在它引用的 html 之前,它会在触发时找不到该 html。

将代码放在远程页面中的 html 之后将解决此问题

于 2013-02-05T23:41:47.567 回答