【发布时间】:2012-06-10 19:14:59
【问题描述】:
对于我正在为学校制作的网站,我第一次尝试广泛使用 Jquery,尽管到目前为止我已经做了很多,但我被困在两个(很可能是相关的)问题。
我知道即将到来的案例有点长,但我觉得有必要为阅读本文的每个人提交所有相关代码,以便更好地了解正在发生的事情。
基本上,该网站是一个 index.html 文件,其中包含 CSS、几个按钮和一个带有 ID 内容的 div。我使用这段代码来完成这项工作:
<script type="text/javascript">
if ($('#content').innerHTML == " "){
$(document).ready(function(){
$('#content').load('main_text.html');
});
}
</script>
<script type="text/javascript">
function loadContent(elementSelector, sourceURL) {
$(""+elementSelector+"").load(""+sourceURL+"");
}
</script>
然后有一个名为 search.html 的内容页面,它只包含一个表单,该表单将搜索字符串提交给 search.php 页面(通过 ajax),然后该页面应立即将搜索结果放回名为 search_results 的 div 中相同的 search.html 文件。我为此使用的 jquery:
<script type='text/javascript'>
$(document).ready(function(){
$("#search_results").slideUp();
$("#search_button").click(function(e){
e.preventDefault();
ajax_search();
});
$("#search_term").keyup(function(e){
e.preventDefault();
ajax_search();
});
});
function ajax_search(){
$("#search_results").show();
var search_val=$("#search_term").val();
$.post("Functions/search.php", {search_term : search_val}, function(data){
if (data.length>0){
$("#search_results").html(data);
}
})
}
</script>
我遇到的问题如下: 在我有第一行代码之前: if ($('#content').innerHTML == " "){;实施后,我会打开网站,很好地加载 main_text.html,我可以很好地导航到其他子页面。但是在 search.html 的表单字段中输入一些内容并没有显示任何结果(只是输入应该已经触发了该功能)。当我点击此表单上的搜索按钮时,没有看到查询结果,main_text.html 文件再次加载到#content div 中。这让我假设,也许,不知何故,代码:
$(document).ready(function(){
$('#content').load('main_text.html');
});
再次被称为不受欢迎的。 Hency 为什么我实现了检查 innerHTML 是否存在。
但是,现在,当我第一次加载页面时,#content div 根本不会加载任何初始内容。 (网页上的部分刚刚变成黑色,就像我的页面背景一样)我必须单击任何按钮才能在我的主要内容 div 中再次加载一些内容。此外,当我现在回到 search.html 时,键入任何内容以获取结果,就像以前一样,仍然不起作用。如果我现在点击搜索按钮,我会再次得到我刚打开页面时看到的初始结果:一个涂黑的#content div。
不知何故,最大的问题在于从我的 PHP 获取结果的 jquery 似乎不起作用。如果搜索结果未显示在 search.html 的 #search_result div 中的问题得到解决,我的 content.innerhtml 检查问题可能已经过时。
任何人都知道我可以做些什么来解决这个问题。或者,对于我正在制作的那种网站,我可以采取哪些其他方法。由于我正在尝试在这里学习 jquery,因此总是赞赏更好的方法,我宁愿学习自己以正确的方式做这件事。 :)
感谢您的宝贵时间。
【问题讨论】:
-
您是否尝试删除引号之间的空格?将
" "替换为""并检查代码是否正常工作并告诉我们。 :) -
使用 jquery,你需要 $('#content').html() == "" 而不是 $('#content').innerHTML == " " 在你的 if 中。
-
是的对不起,“”实际上是我的第一次尝试,忘记提及了。然后开始使用其他选项进行故障排除,其中包括“”。都给出相同的结果。 (没有结果,就是这样。)
-
@Mason81 现在尝试了 .html() 而不是 innerHTML,但遗憾的是,这给出了相同的结果。所以基本上,该 IF 语句的结果返回为 FALSE,这就是未加载 main_text.html 的原因。不知道为什么不。这是内容 div 的行如下所示:
-
你有没有试过把你放在document.ready里面?像这样: $(document).ready(function(){if($('#content').html()==''){$('#content').load('main_text.html'); }});