Javascript 通过jQuery';行不通
以下jQuery代码:Javascript 通过jQuery';行不通,javascript,jquery,html,css,scroll,Javascript,Jquery,Html,Css,Scroll,以下jQuery代码: HTML: 你好 CSS: .标题{ 背景色:黑色; 高度:1000px; 宽度:300px; 颜色:白色; 文本对齐:居中; 填充:30px; } .固定.导航栏{ 边框:10px纯红; 位置:固定; 背景色:白色; } navbar先生{ 背景颜色:蓝色; 高度:50px; 宽度:300px; 颜色:白色; } JS: $(窗口)。滚动(函数(){ if($(window.scrollTop()>200)(“header”).addClass(“fixed”); e
HTML:
你好
CSS:
.标题{
背景色:黑色;
高度:1000px;
宽度:300px;
颜色:白色;
文本对齐:居中;
填充:30px;
}
.固定.导航栏{
边框:10px纯红;
位置:固定;
背景色:白色;
}
navbar先生{
背景颜色:蓝色;
高度:50px;
宽度:300px;
颜色:白色;
}
JS:
$(窗口)。滚动(函数(){
if($(window.scrollTop()>200)(“header”).addClass(“fixed”);
else$(“头”).removeClass(“固定”);
});
确实有效
但是,当我把它添加到我的主页时,我必须刷新页面以添加“固定”类。但是我希望在向下滚动时实时添加该类,而不必刷新页面。这在JSFIDLE中有效,为什么它在我的页面上不起作用
我的页面:尝试使用
$(function() {
$(window).on('scroll', function(){
if($(this).scrollTop() > 200) $("header").addClass("fixed");
else $("header").removeClass("fixed");
});
});
正如Karl André所说,您的
$
对象正在被覆盖。要使代码正常工作,可以执行以下任一操作:
使用jQuery
对象:
jQuery(window).scroll( function(){
if(jQuery(window).scrollTop() > 200) jQuery("header").addClass("fixed");
else jQuery("header").removeClass("fixed");
});
或者将所有内容包装在自动执行函数中,将jQuery
对象作为参数传递:
(function($)
{
$(window).scroll( function(){
if($(window).scrollTop() > 200) $("header").addClass("fixed");
else $("header").removeClass("fixed");
});
}(jQuery))
尝试添加
$(function(){/*您的js代码在这里*/})
@Aleksandar没有尝试,但它不会改变任何东西<代码>$(窗口)是在DOM准备就绪之前定义的。检查页面上的控制台会在索引的第34行出现错误:“undefined is not a function”(未定义不是函数),这是下面的一行:if($(窗口).scrollTop()>50)$(“header”).addClass(“fixed”)代码>您的$
符号被覆盖。使用jQuery
而不是$
@SimonMathewson试试Karl Andre说的话,或者将其封装在一个自动执行函数中,将jQuery作为参数传递<代码>(函数($){/*code here*/}(jQuery))
查看OP的注释。
(function($)
{
$(window).scroll( function(){
if($(window).scrollTop() > 200) $("header").addClass("fixed");
else $("header").removeClass("fixed");
});
}(jQuery))