您可以在以下位置查看我的js(以及相关的html和css):
我正在进行一项与Blackboard Learn 9.1一起使用的调整(因此,如果有人对学习管理系统或调整构件有所了解,他们可能已经对我为什么遇到此问题有了一些线索)。
我所做的更改涉及检查应用了什么课程主题,然后根据该主题向表中添加一个类,以使表的样式与主题相匹配。
当我在我们的服务器上运行它时,得到的错误$(...)为null,当它到达var theme_id = $(“。current”)。attr(“ id”);时。其余的JS正常工作(请注意,JS的顶部通常是页面上包含的另一个文件,无法像经过身份验证的服务器上的一样将其链接到jsfiddle)
我对此文件的贡献是(以及代码失败的地方):
242行
$unitMap.addClass(getTheme());
381-385行
function getTheme() {
var theme_id = $(".current").attr("id"); // error occurs this line
var theme = $("#"+theme_id).find("a").html();
return theme.toUpperCase();
}
这是我第一次尝试使用jQuery,因此我担心的一个问题是,我使用的错误语法与编写代码的jQuery版本有关。
当您选择包含调整项时,我在代码中找到了以下内容:
<script src='/webapps/qut-tweakbb-BBLEARN/jquery.js' type='text/javascript'></script><script src='/webapps/qut-tweakbb-BBLEARN/jquery.tweakSetup.js' type='text/javascript'></script>
jsFiddle顶部的代码来自jquery.tweakSetup.js
我希望我对jQuery的版本使用了错误的标记(尽管我无法缝隙找到原始代码所写的版本),任何建议将不胜感激。
最佳答案
在运行自定义脚本之前,请确保已加载jQuery。
您是否从JSFiddle复制了代码,然后立即使用了它? Fiddle代码有被破坏的习惯。 ;
通常被定义为无效字符。删除它并自己重新输入。
添加:
3.正如John Fontaine所指出的,jQuery有可能与另一个库冲突。要绕过它,可以使用jQuery noConflict模式。 documentation对此很清楚,但是为了以防万一,我将举一些例子。
最好的方法如下,或者至少这是我的偏爱:
使用其他变量代替$
,例如$j
。这样,您和您的代码的任何其他修订者都可以清楚地看到此代码依赖于$
以外的其他库。
例:
var $j = jQuery.noConflict();
// Use jQuery via $j(...)
$j(document).ready(function () {
var secondary = $j("#secondary-footer");
secondary.hide().addClass("fixed").fadeIn("fast");
$j(window).scroll(function () {
if (secondary.offset().top >= ($j(document).height() - 350)) {
secondary.removeClass("fixed");
} else if (secondary + ":not('.fixed')") {
secondary.addClass("fixed");
}
});
});
这种方法的“危险”是您有时可能会忘记使用此变量。您可以做的就是使用正常的美元符号开始,并在完成操作后查找替代项。
可能是最简单的方法:
jQuery(function ($) {
var secondary = $("#secondary-footer");
secondary.hide().addClass("fixed").fadeIn("fast");
$(window).scroll(function () {
if (secondary.offset().top >= ($(document).height() - 350)) {
secondary.removeClass("fixed");
} else if (secondary + ":not('.fixed')") {
secondary.addClass("fixed");
}
});
});
这允许您在该块中使用jQuery,即以
jQuery(function ($) {
开头并以});
结束的块。关于jquery - TypeError:$(…)在Firebug中为null,但代码可在jsFiddle上使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14203125/