JavaScript:$ 不是一个函数(但看起来是)
JavaScript: $ is not a function (but it seems like it is)
我有一个奇怪的JavaScript问题,我就是无法理解。
我的自定义JavaScript文件"header.js"使用jQuery。它抛出了臭名昭著的"$ 不是函数"错误消息,但我不明白为什么。奇怪的是我包含jQuery.js并且有问题的代码似乎没有问题绑定到jQuery事件。所以没有包含jQuery不是问题。
标头.js
$(document).ready(function () {
if ($(document).width() >= 768) {
var header = false;
var scrollHandler = function () {
var scrollTop = $(window).scrollTop(); // line 5 that throws the error
// more code
};
//register function which is called on scroll
$(window).scroll(scrollHandler);
}
});
我的 HTML(带有一些调试输出)
<script src="~/js/vendor/jquery.js"></script>
<script>
function printTest(str) {
console.log("test (" + str + "): " + $(".test").length);
}
</script>
<script>
printTest("2.1 before header");
</script>
<script src="~/js/header.js"></script>
<script>
printTest("2.2 after header");
</script>
加载页面时的输出
test (2.1 before header): 1
test (2.2 after header): 1
但是一旦我滚动我的控制台错误输出显示:
TypeError: $ is not a function (line 5 in header.js)
有人知道为什么会这样吗?我已经分析了几个小时,我不明白原因。任何帮助/想法/建议将不胜感激。谢谢。
我可能有解决方法。这不是您寻求的确切答案。但是,您可以检查将滚动处理程序的定义放在文档准备就绪之外是否适合您吗?请尝试以下操作:
var scrollHandler = function() {
var scrollTop = $(window).scrollTop(); // line 5 that throws the error
// more code
};
$(document).ready(function() {
if ($(document).width() >= 768) {
var header = false;
//register function which is called on scroll
$(window).scroll(scrollHandler);
}
});
如果这也不起作用,那么有一些东西覆盖了您的 $ 定义。你能告诉我们这是否适用于你的代码吗?
好的,所以如果你有同样的问题,这就是我解决它的方式。
问题是与要求.js冲突。Require.js 会自动随 Sitecore 中的模块一起提供。起初我不知道require.js导致了这种冲突,因为当我检查JavaScript文件时,我正在寻找$的一些覆盖。我当时不知道的是,require.js还有一个配置文件,其中包含自己的jQuery版本。
我通过删除 require.js(并将其手动带到我的页面的依赖项)解决了它。
相关文章:
- 我可以在json对象中添加一个函数吗
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在另一个函数中使用变量this
- 在另一个函数成功结束后调用该函数
- mongoose.connect undefined不是一个函数
- 监听器必须是一个函数
- 使用JS函数来使用另一个函数的语法?node.js
- 如何取消object.prototypes javascript的一个函数
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 嵌套到另一个函数中的Fancybox函数;不起作用
- 如何在javascript中使用不止一个函数
- jQuery-在页面加载时执行一个函数
- jquery UI draggable:UI.children不是一个函数
- jQuery Mobile Undefined不是一个函数
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- javascript函数将数据添加到屏幕,但随后被另一个函数覆盖
- JS异常:animate不是一个函数
- 如何将一个函数附加到一个不存在的元素上
- JavaScript/jQuery-添加添加和删除类与下一个函数之间的延迟