多写jQuery口才——结合逻辑
Writing jQuery more eloquenty - combining logic
我写了一个简单的脚本,效果很好。
var mywindow = $(window);
var mypos = mywindow.scrollTop();
var up = false;
var uiscroll;
mywindow.scroll(function () {
uiscroll = mywindow.scrollTop();
if (uiscroll > mypos && !up) {
$('div').addClass('down');
up = !up;
console.log(up);
} else if(uiscroll < mypos && up) {
$('div').removeClass('down');
up = !up;
}
mypos = uiscroll;
if (mywindow.scrollTop() > 200) {
$('div').addClass('test');
}
else {
$('div').removeClass('test');
}
});
脚本根据滚动的三种不同条件将三种不同的 css 状态应用于 div。向上或向下以及滚动距离顶部的距离。
困扰我的是,必须有比我一起破解的更好、更多的 eloquent 编写方法。不过我还是不太明白。
只是想学习更好地编写脚本,这样我放在一起的东西就不会那么可笑了。我通过查看示例学习得最好。
感谢任何help/guidance。
这是我的尝试
var mypos = 0;
var up = false;
var $div = $('div');
$(window).scroll(function () {
var uiscroll = $(this).scrollTop();
if (uiscroll > mypos && !up) {
$div.addClass('down');
up = !up;
} else if(uiscroll < mypos && up) {
$div.removeClass('down');
up = !up;
}
mypos = uiscroll;
$div.toggleClass('test',uiscroll>200);
});
我删除了 mywindow
变量,因为它不是必需的。 mypos
可以用0初始化。
您可以使用 $(this)
在滚动处理程序中引用 window。
与其告诉 jQuery 多次查找 div
,不如告诉它查找一次并将其存储在 jquery 对象中。多次搜索同一个元素实际上相当expensive/wasteful,尤其是在多次触发的滚动事件中。如果您需要多次引用同一个元素,最好将它存储在一个变量中。
toggleClass('classname',boolean)
只是
的简写
if(boolean is true)
//add class
else
//remove class
jsFiddle 所以你可以测试它
我写了一个简单的脚本,效果很好。
var mywindow = $(window);
var mypos = mywindow.scrollTop();
var up = false;
var uiscroll;
mywindow.scroll(function () {
uiscroll = mywindow.scrollTop();
if (uiscroll > mypos && !up) {
$('div').addClass('down');
up = !up;
console.log(up);
} else if(uiscroll < mypos && up) {
$('div').removeClass('down');
up = !up;
}
mypos = uiscroll;
if (mywindow.scrollTop() > 200) {
$('div').addClass('test');
}
else {
$('div').removeClass('test');
}
});
脚本根据滚动的三种不同条件将三种不同的 css 状态应用于 div。向上或向下以及滚动距离顶部的距离。
困扰我的是,必须有比我一起破解的更好、更多的 eloquent 编写方法。不过我还是不太明白。
只是想学习更好地编写脚本,这样我放在一起的东西就不会那么可笑了。我通过查看示例学习得最好。
感谢任何help/guidance。
这是我的尝试
var mypos = 0;
var up = false;
var $div = $('div');
$(window).scroll(function () {
var uiscroll = $(this).scrollTop();
if (uiscroll > mypos && !up) {
$div.addClass('down');
up = !up;
} else if(uiscroll < mypos && up) {
$div.removeClass('down');
up = !up;
}
mypos = uiscroll;
$div.toggleClass('test',uiscroll>200);
});
我删除了 mywindow
变量,因为它不是必需的。 mypos
可以用0初始化。
您可以使用 $(this)
在滚动处理程序中引用 window。
与其告诉 jQuery 多次查找 div
,不如告诉它查找一次并将其存储在 jquery 对象中。多次搜索同一个元素实际上相当expensive/wasteful,尤其是在多次触发的滚动事件中。如果您需要多次引用同一个元素,最好将它存储在一个变量中。
toggleClass('classname',boolean)
只是
的简写if(boolean is true)
//add class
else
//remove class
jsFiddle 所以你可以测试它