jQuery的$(窗口)事件的问题,我有这个代码的问题:JavaScript的 - 在调用2个功能
$(document).ready(function(){
var NavY = $('.header-top').offset().top;
var stickyNav = function(){ <----------- 1)
var ScrollY = $(window).scrollTop();
if (ScrollY > NavY) {
$('.header').addClass('stick');
$('.main-left-arrow').addClass('main-left-arrow-disable');
} else {
$('.header').removeClass('stick');
$('.main-left-arrow').removeClass('main-left-arrow-disable');
}
};
$(window).scroll(function() { <---------- 1)
stickyNav();
});
stickyNav();
var posts = function() { <------------- 2)
$('.btn').click(function() {
var post = $('.status-box').val();
$('<li>').text(post).prependTo('.posts');
$('.status-box').val('');
$('.counter').text('140');
$('.btn').addClass('disabled');
});
$('.status-box').keyup(function() {
var postLength = $(this).val().length;
var charactersLeft = 140 - postLength;
$('.counter').text(charactersLeft);
if(charactersLeft < 0) {
$('.btn').addClass('disabled');
}
else if(charactersLeft == 140) {
$('.btn').addClass('disabled');
}
else {
$('.btn').removeClass('disabled');
}
});
$('.btn').addClass('disabled');
}
$(window).load(function() { <--------------- 2)
posts();
});
posts();
});
我不知道如何调用posts();
功能。我知道$(window).load
可能有问题,但我不知道是什么。这第一个功能 - stickyNav();
工作正常。如果我会写这样的:
$(window).scroll(function() {
stickyNav();
posts();
});
stickyNav();
posts();
... 他们都将工作,但也会使post();
功能依赖于它,我不能有滚动。
所以第二个功能根本就不起作用。我不明白为什么。 我想结合两个功能:
第一:
$(document).ready(function(){
var NavY = $('.header-top').offset().top;
var stickyNav = function(){
var ScrollY = $(window).scrollTop();
if (ScrollY > NavY) {
$('.header').addClass('stick');
$('.main-left-arrow').addClass('main-left-arrow-disable');
} else {
$('.header').removeClass('stick');
$('.main-left-arrow').removeClass('main-left-arrow-disable');
}
};
$(window).scroll(function() {
stickyNav();
});
stickyNav();
});
二:
var posts = function() {
$('.btn').click(function() {
var post = $('.status-box').val();
$('<li>').text(post).prependTo('.posts');
$('.status-box').val('');
$('.counter').text('140');
$('.btn').addClass('disabled');
});
$('.status-box').keyup(function() {
var postLength = $(this).val().length;
var charactersLeft = 140 - postLength;
$('.counter').text(charactersLeft);
if(charactersLeft < 0) {
$('.btn').addClass('disabled');
}
else if(charactersLeft == 140) {
$('.btn').addClass('disabled');
}
else {
$('.btn').removeClass('disabled');
}
});
$('.btn').addClass('disabled');
}
$(document).ready(posts);
他们在单独的文件中都工作得不错。我只想让他们在一个js文件中工作。并且可以在按钮按下时触发post()
。
请解释你期望这段代码做什么。请注意,“滚动”事件在滚动时会一秒钟激发多次 – charlietfl
虽然这似乎有点城市神话。只有使用平滑滚动或拖动滚动条本身的浏览器才会触发大量滚动事件。正常的“即时”鼠标滚轮像大多数浏览器一样只会触发单个事件。 – Shikkediel
@Shikkediel几乎不是神话http://jsfiddle.net/vohbo0h6/ – charlietfl