javascript – 在某些页面上导致jQuery“$(…)为空”的原因是什么?

我有一些控制隐藏div的javascript.现在它适用于大多数页面,但在其他页面上使用其他javascripts它不起作用…我的js写得不好吗?

$(document).ready(function() {
$("#user-dropdown-toggle").live ('click',function() {
    $("#left-user-bar").addClass("open");
    $("#user-dropdown-toggle").addClass("league-judgement");
    $("body").addClass("league-judgement");
});
$(".league-judgement").live('click',function() {
  $("#left-user-bar").removeClass("open");
  $("#user-dropdown-toggle").removeClass("league-judgement");
  $("body").removeClass("league-judgement");
});
});

Firefox在错误控制台中报告以下内容

时间戳:2012年4月18日下午9:08:21
错误:$(“#user-dropdown-toggle”)为空

最佳答案
jQuery中的$函数永远不会返回null.所以它可能是一个不同的非jQuery $使用. (是否有任何ASP.NET东西或prototype.js或其他库被使用?稍后声明的自定义$函数?)

我知道$本身不是null,因为异常会有所不同,例如:“$不是函数”.在这种情况下,浏览器会说表达式($(…))的结果为空,这使我得出上述结论.

尝试:

$(document).ready(function($) { // <-- note $there
   ...
});

或者,更好的是,因为它只依赖于window.jQuery而不是窗口.$:

jQuery(function($) { // <-- note $there
   ...
});

并且,如果可行的话,那就是$在“准备好”事件之前被破坏了(但是在$(…).准备好之后).当然,有可能(但不太可能)此时$已经不是jQuery了…

要查看$是否是jQuery(使用Web Developer Console或Firebug):

> $=== jQuery通常应该是真的,但它可能不依赖于noConflict等
> $.fn.jquery和$().jquery都应该将jQuery版本作为字符串
> $(只是在控制台上指定功能将“显示源”)

顺便说一句,我会缩进函数体(例如在“准备好”的回调中),以便更清楚地看到它的开始/结束位置.

快乐的编码.

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: &lt;span id=&quot...
jQuery 添加水印 &lt;script src=&quot;../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...