我有一些控制隐藏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");
});
});
时间戳:2012年4月18日下午9:08:21
错误:$(“#user-dropdown-toggle”)为空
最佳答案
jQuery中的$函数永远不会返回null.所以它可能是一个不同的非jQuery $使用. (是否有任何ASP.NET东西或prototype.js或其他库被使用?稍后声明的自定义$函数?)
原文链接:https://www.f2er.com/jquery/428601.html我知道$本身不是null,因为异常会有所不同,例如:“$不是函数”.在这种情况下,浏览器会说表达式($(…))的结果为空,这使我得出上述结论.
尝试:
$(document).ready(function($) { // <-- note $there
...
});
或者,更好的是,因为它只依赖于window.jQuery而不是窗口.$:
jQuery(function($) { // <-- note $there
...
});
并且,如果可行的话,那就是$在“准备好”事件之前被破坏了(但是在$(…).准备好之后).当然,有可能(但不太可能)此时$已经不是jQuery了…
要查看$是否是jQuery(使用Web Developer Console或Firebug):
> $=== jQuery通常应该是真的,但它可能不依赖于noConflict等
> $.fn.jquery和$().jquery都应该将jQuery版本作为字符串
> $(只是在控制台上指定功能将“显示源”)
顺便说一句,我会缩进函数体(例如在“准备好”的回调中),以便更清楚地看到它的开始/结束位置.
快乐的编码.