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