我遇到了问题。这就是我在标题
中的某个页面上的内容 $(document).ready(function(){
$(".ajax").click(function(e){
var url = $(this).attr("href");
var url = url.split("##/");
if (!url[1]){url[1]=" ";}
var page = "http://<?php echo $_SERVER[SERVER_NAME]; ?>page.php?ajax=1&what="+url[0]+url[1];
$("#content").load(page);
var kkk = 'Asdasdasd';
});
});
所以,点击<a href="##/new_page" class="ajax">new</a>
后,内容正在填充:
<script> alert(kkk); </script>
<a href="##/old_page" class="ajax">old page</a>
但是,由于新页面没有看到kkk,并且原始页面上的链接都不起作用,因此不会考虑警报。为什么呢?
答案 0 :(得分:2)
kkk
变量在文档就绪函数的范围内被括起来。将其移到此功能之外:
var kkk = '...';
$(document).ready(function () {
...
});
答案 1 :(得分:2)
为了使链接在重新加载后能够正常工作,您可能需要一个直播活动。这将使用ajax类来监视任何新对象,而不仅仅是加载原始文档时存在的对象。如果您需要设置其他任何内容(通常在文档准备就绪内),请将其作为load()
的第二个参数放入匿名函数中,因为它不能保证加载新内容。例如:
$(".ajax").live('click', function(e){
var url = $(this).attr("href");
var url = url.split("##/");
if (!url[1]){url[1]=" ";}
var page = "http://<?php echo $_SERVER[SERVER_NAME]; ?>page.php?ajax=1&what="+url[0]+url[1];
$("#content").load(page, function () { var kkk = 'Asdasdasd'; });
});
或者正如@Levi指出的那样,.delegate调用可以完成同样的事情,同时减少浪费:
$('content').delegate('.ajax', 'click', function() (...)