2012-04-11 97 views
1

我想在用户点击链接时将不同的页面加载到div中。jquery加载函数不会取代之前加载的页面

这里是我的index.html代码:

<li><a href="javascript:loadContent('#content_main','cardinal.jsp')">SMS</a></li> 
<li><a href="javascript:loadContent('#content_main','paypoint.jsp')">Paypoint</a></li> 

而且loadContent功能如下:

function loadContent(elementSelector, sourceUrl) { 
$(""+elementSelector+"").empty(); 
$(""+elementSelector+"").load("http://localhost:7070/ning/"+sourceUrl+""); 
} 

我cardinal.jsp看起来是这样的:

$(document).ready(function() { 
    setInterval(function(){ 
    alert("Cardinal"); 
},5000); 
}); 

而且找到付款.jsp有此代码:

$(document).ready(function() { 
    setInterval(function(){ 
    alert("paypoint"); 
},5000); 
}); 

我先点击链接短信。这会加载cardinal.jsp并每隔5秒显示一次警报箱(基数)。现在,当我点击付费点链接时,我应该只运行paypoint.jsp页面。但是,相反,它似乎将paypoint.jsp内容附加到div(其中已包含cardinal.jsp的内容)。这导致两个警报框被交替显示。你可以看到,我试图在加载新页面之前清空div的内容。但是,它仍然不起作用。我在这里做错了什么?

感谢您的帮助提前

回答

3

间隔如果您删除设置它的代码不会消失。如果你想删除它做类似:

var interval = setInterval(function() { 
    alert("paypoint"); 
}, 5000); 

clearInterval(interval); 

记住,你不加载全新的一页,但新的内容,以现有页面。

+0

它不起作用。如果我给clearInterval,警报框根本不会被调用。 – CuriousCoder 2012-04-11 04:57:52

+0

如果我打电话给clearInterval,当再次单击链接时,我将无法再次调用setInterval? – CuriousCoder 2012-04-11 05:51:27

+0

是的,你可以。我只是怀疑你的文档就绪事件触发动态添加内容。 – Heikki 2012-04-11 06:13:00

1

是由海基的建议....这个工作对我来说.....

index.html中

<script> 
    var interval; 
function loadContent(elementSelector, sourceUrl) { 
    $(elementSelector).empty(); 
    interval = window.clearInterval(interval); 
    $(elementSelector).load("http://localhost/"+sourceUrl+""); 
} 
</script> 

和paypoint.jsp

$(document).ready(function() { 
    interval = window.setInterval(function(){ 
    alert("Paypoint"); 
    },5000); 
}); 

和in cardinal.jsp

$(document).ready(function() { 
    interval = window.setInterval(function(){ 
    alert("Cardinal"); 
    },5000); 
}); 

c哎哟,如果这对你有效......

+0

是的,它的工作原理。谢谢。 upvoted你的答案 – CuriousCoder 2012-04-11 15:06:36