我是使用 jQuery 的新手,所以我面临的问题应该是相当直截了当的。基本上我想要完成的是在我的站点的 DIV 元素中加载各种简单的纯文本页面,并使用导航栏隐藏/取消隐藏这些单独的 DIV。
DIV 使用脚本块正确加载请求的页面。但是,无法正常工作的是切换这些 DIV 块的可见性。我已将其缩小为我创建的一个 jQuery 函数,每当我引用任何 DIV 块时,它都会阻止整个脚本调用。让我用代码片段更好地解释一下。
这是一些非常简单的代码,在单击菜单链接时,运行隐藏功能,然后显示相应的 DIV 元素。
$( document ).ready(function()
{
console.log("document ready."); <-- does NOT get called with hideDivs()
$('#button1').click(function(){
hideDivs();
$("#page1").show();
});
$('#button2').click(function(){
hideDivs();
$("#page2").show();
});
});
这是 hideDivs() 函数,就在 ready 函数之上:
function hideDivs()
{
$("#page1").hide(); <-- These lines cause the entire
$("#page2").hide(); <-- <script> block to note get called.
}
最后,page1和page2是在页面中间使用脚本块创建的:
<div id="page1"></div>
<div id="page2"></div>
<script>
$("#page1").html('<object style="overflow:hidden; width: 100%; height: 500px;" data="page1.php">').show();
$("#page2").html('<object style="overflow:hidden; width: 100%; height: 500px;" data="page2.php">').hide();
</script>
那么为什么顶部 SCRIPT 块会因 hideDivs() 函数而失败?我试过把它放在 $( document ).ready 函数中,没有任何变化。同样,如果函数是空白的,或者包含像“console.log”这样的简单内容,它可以工作,但是当引用 DIV 标记时它会中断。
更奇怪的是,如果我简单地重写代码,使函数失败的代码可以工作:
$('#button1').click(function(){
$("#page1").hide(); <-- This works fine
$("#page2").hide(); <-- (page1 repeated to match function code)
$("#page1").show();
});
我有很多页,所以我宁愿能够使用一个函数,而不是有很多重复的代码。
我的 javascript 控制台中没有显示任何错误。我仔细研究了 StackOverflow 和 Google 搜索的函数调用,但找不到解决方案。我确定我犯了一个我忽略的非常愚蠢的错误,所以任何帮助将不胜感激。