2011-09-03 68 views
2

我有一个网页在点击时重定向到另一页。 在第二页上我有这样的:

<?php if(isset($_POST['tab1'])) { ?> 
    <script>$('#home').trigger('click'); </script> 
<?php }?>  

$_POST伤愈复出没关系,只是我在控制台中对jQuery的这个错误:

在Firebug:

TypeError: $("#home") is null 

还是在Chrome:

$('#home').trigger('click'); 

如果我运行这个:alert(document.getElementsByTagName('#home'));

我得到一个警报,提供:[object HTMLCollection]undefined

如果我认为我可以看到我的jQuery有来源:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.js"></script> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.js"></script> 
<script> 
!window.jQuery && document.write('<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.js"><\/script>'); 
</script> 

为什么jQuery的失败,任何想法?

回答

5

尝试把它做好准备,以确保DOM在操纵它之前加载一个文件:

<?php if(isset($_POST['tab1'])) { ?> 
    <script>$(function() { $('#home').trigger('click'); });</script> 
<?php }?> 
2

FIX:

<script>$(window).load(function() { $('#home').trigger('click'); });</script> 
0

把你的脚本在ready()功能。 尝试类似这样:

<?php if(isset($_POST['tab1'])) { ?> 
    <script>$(function(){ 
      $('#home').trigger('click'); 
    });</script> 
<?php }?> 
0

确保首先加载文档至关重要。

<script>$(function() { $('#home').trigger('click'); });</script> 

这是因为当时的脚本被加载,有可能是#home尚未确定(因为定义它的源代码尚未下载/解析),
因此你应该做务必在某些设置$(function() { ... });$(document).ready(function() { ... });

8

包围它的$符号不是jQuery的
(前。jQuery.noConflict();原因是)

也看到别名Replace "$"(dollar Sign) with "JQuery"

所以$(document).ready(function() { ... }); 写入

jQuery(document).ready(function() { ... }); 
0

在我的情况下,工作的独特的解决方案是这样的一个我从here有:

<script language="javascript" type="text/javascript"> 
    var $j = jQuery.noConflict(); 
    $j(document).ready(
    function() { 
     alert($j("selector")); //object is properly initialized 
    } 
); 
</script> 

使用jQuery.noConflict();返回变量,而不是的$