脚本不能正常工作(但在其他站点上正常工作)
好吧,这可能是一个愚蠢的问题,但我会问。当您在滚动时通过页面上的某个点时,我正试图制作一个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>
之前。似乎没有任何工作。该脚本完美地在另一个站点上运行...
您正在运行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);
感谢您的解答。为什么我没有在我的其他任何网站上遇到同样的问题?它可能是这段代码吗? '//制作jQuery的谷歌API 功能modify_jquery(){ 如果{// 注释掉接下来的两行要加载的jQuery的本地副本 wp_deregister_script( 'jQuery的')(is_admin()!); wp_register_script('jquery','http://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js',false,'2.2.4'); wp_enqueue_script('jquery'); } } add_action('init','modify_jquery');' – Steggie
一般而言'noConflict'模式只是用'jQuery.noConflict();'盯着。我不知道'wp_register_script'函数是如何工作的,但它可能是。如果你想再次注册jQuery到'$',你可以像'window。$ = jQuery;'那样做,但是要记住,其他脚本使用'$'可能会变成其他问题。 。如果有什么东西把jQuery放在'noConflict'模式下,或者重新分配'$',那么会有一个原因... – eisbehr
好吧,我现在就离开它。我不想搞乱其他脚本。再次感谢。 – Steggie
试试这样说:'jQuery的(文件)。就绪(函数($){'(*注意' $'*)听起来有点像'noConflict'模式 – eisbehr
可能很明显,但是您的页面中包含JQuery并可用? – ste2425
@ ste2425,是的,所有其他jQuery代码都能正常工作,在同一页上工作正常... – Steggie