我一直想把这个问题弄清楚一段时间,但没有运气。
当点击导航栏或侧边栏链接时,我使用最简单的jquery和ajax将内容加载到我的页面中。我只是把它放在document.ready中:
$("#nav ul li a").click(function(){content_load($(this).attr('href'));return false;});
我的content_load函数是这样的:
function content_load(toLoad)
{
$('#content').hide('fast',loadContent);
function loadContent()
{
$('#content').load(toLoad,'',function(){showNewContent();tb_init('a.thickbox, area.thickbox, input.thickbox');});
}
function showNewContent()
{
$('#content').show('fast');
}
}
这有效!
但是......当我在function_load()中添加简单的if ... else语句,而不是简单的ajax加载时,我会导航到我想用load()函数加载的页面。就像“返回假”被忽略了......
所以这就是“打破”一切的代码:
function content_load(toLoad)
{
if(toLoad=="content/page1.html") {//do something}
else
{
$('#content').hide('fast',loadContent);
function loadContent()
{
$('#content').load(toLoad,'',function(){showNewContent();tb_init('a.thickbox, area.thickbox, input.thickbox');});
}
function showNewContent()
{
$('#content').show('fast');
}
}
}
知道为什么???
谢谢! 纽曼
答案 0 :(得分:2)
是你的评论在第一行评论if语句的结束括号
答案 1 :(得分:2)
也许这是一个奇怪的范围问题。将函数放在if...else
语句之外,甚至更好,使用匿名函数:
function content_load(toLoad) {
if(toLoad=="content/page1.html") {
//do something
}
else {
$('#content').hide('fast', function() {
$(this).load(toLoad, function() {
$(this).show('fast');
tb_init('a.thickbox, area.thickbox, input.thickbox');
});
});
}
}
您被重定向到页面意味着您的功能错误。如果您拥有//do something
的代码,则也应该检查它。
浏览器的错误控制台应该至少为您提供一些信息。
您也可以调用事件对象的相应方法,而不是return false
:
$("#nav ul li a").click(function(event){
// event.preventDefault(); <-- put here to always prevent reload,
// even on error (but should be avoided)
content_load(this.href);
event.preventDefault();
});
答案 2 :(得分:1)
不知道这是否是一个错字,但是结束括号被注释掉了。
//do something}
这会导致它破裂