2011-09-03 47 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();返回變量,而不是的$