TypeError:$(selector)为null

时间:2011-09-03 06:50:50

标签: php jquery

我有一个网页,点击后会重定向到另一个页面。 在第二页,我有这个:

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

$_POST回来没问题,只是我在jquery的控制台中出现了这个错误:

在萤火虫中:

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失败的任何想法?

6 个答案:

答案 0 :(得分:8)

在某些设置中,$ sign不是jQuery的别名
(例如jQuery.noConflict();导致)

另见 Replace "$"(dollar Sign) with "JQuery"

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

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

答案 1 :(得分:5)

尝试将其放入文档中以确保在操作之前加载DOM:

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

答案 2 :(得分:2)

FIX:

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

答案 3 :(得分:0)

将您的脚本放在ready()函数中。 尝试这样的事情:

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

答案 4 :(得分:0)

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

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

那是因为在加载脚本时,可能还没有定义#home(因为定义它的源代码尚未下载/解析), 所以你应该确保用$(function() { ... });$(document).ready(function() { ... });

括起来

答案 5 :(得分: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();返回变量代替$