好的,这可能是一个愚蠢的问题,但是,我会问。当你在滚动时在页面上传递一个点时,我试图制作一个div棒。我有这个脚本:
<script type="text/javascript">
$(document).ready(function() {
var s = $("#sticker");
var pos = s.position();
$(window).scroll(function() {
var windowpos = $(window).scrollTop();
if (windowpos >= pos.top + 335) {
s.addClass("stick");
} else {
s.removeClass("stick");
}
});
});
</script>
在我的某个网站上运行正常。但现在我在一个新网站上尝试它。每当我在控制台日志中收到错误时说:TypeError: $ is not a function
当我查看代码中的错误时,会突出显示$(document).ready(function() {
部分。
如果我删除了$(document).ready
部分和});
,则告诉我var s = $("#sticker");
部分是$ is not a function
。
我试过了
<script type="text/javascript">
jQuery(document).ready(function() {
var s = $("#sticker");
var pos = s.position();
$(window).scroll(function() {
var windowpos = $(window).scrollTop();
if (windowpos >= pos.top + 335) {
s.addClass("stick");
} else {
s.removeClass("stick");
}
});
});
</script>
然后它会跳过(document).ready
部分,但它再次告诉我var
部分不是函数。
如果删除脚本,我就没有任何控制台日志消息。可能是什么问题呢?我尝试将代码放在header
和footer
中,甚至在<div id="sticker">...</div>
之前。似乎没什么用。该脚本在其他网站上完美运行......
答案 0 :(得分:3)
您正在noConfilct
模式下运行jQuery。这意味着,jQuery仅由jQuery
提供,而不是$
。您可以使用ready state
或IIFE
包装代码,以便$
访问jQuery。
就绪状态:
jQuery(document).ready(function($) {
// access jQuery by '$' inside
});
// this is a shorthand for the above '.ready' creation
jQuery(function($) {
// access jQuery by '$' inside
});
<强> IIFE:强>
(function($) {
// access jQuery by '$' inside
})(jQuery);