我正在使用jquery地址插件来加载页面,但是没有hash(#)。
index.html:
<a href="page.html">Link</a> <div id="content"> <script> $(document).ready(function() { $.address.init(function(event) { $('a').address(); }).change(function(event) { // do something depending on the event.value property, e.g. console.log(event.value); $.ajax({ type: "POST", url: event.value, success: function(msg){ $('#content').html( $(msg).find("#content").html() ); } }); }); $('a').click(function(e) { $.address.value($(this).attr('href')); }); }); </script> </div>
page.html:
<div id="content"> <p>text</p> <script> $(document).ready(function() { alert('loaded'); }); </script> </div>
在#content div中将从page.html中加载#content html(也许我应该使用其他函数,而不是.html(),请纠正我),因为div是script标签,但是加载该页面时我没有收到警告从ajax开始,无需加载ajax就可以运行。有人能帮我吗 ?
编辑:当我尝试单击具有js函数的链接时,出现此错误:
XMLHttpRequest cannot load javascript:;. Cross origin requests are only supported for HTTP.
演示:http : //fbstatusi.com/desavanja/kalendar/mesecna_lista
点击链接 Zurka 123
Zurka 123
document.ready加载文档时仅发生一次。AJAX请求不会导致它。
document.ready
<div id="content"> <p>text</p> <script type="text/javascript"> alert('loaded'); </script> </div>
这应该工作。还要尝试更改$(msg).find("#content").html()为$(msg).find("#content")[0].innerHTML,因为jquery html会删除标签。
$(msg).find("#content").html()
$(msg).find("#content")[0].innerHTML
编辑
看看这个线程,有很长的讨论为什么会发生这种情况。在这种情况下,$(msg)jquery将始终删除脚本标签。但是同时会$(msg).filter("script")返回脚本,因此您可以先找到这些脚本,然后再将其全部插入$('#content').html( $(msg).find("#content").html() );
$(msg)
$(msg).filter("script")
$('#content').html( $(msg).find("#content").html() );