您可以在以下位置查看我的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/

10-13 01:49
查看更多