Javascript 从窗口滚动事件中调用窗口大小调整事件中的函数?
我有一个叫做size的变量和一个依赖于它的函数。由于该变量取决于屏幕宽度,并且如果宽度发生变化则需要更改,因此我需要在窗口调整大小事件中设置该变量。但是,我也希望通过其他事件(如滚动事件)调用它Javascript 从窗口滚动事件中调用窗口大小调整事件中的函数?,javascript,Javascript,我有一个叫做size的变量和一个依赖于它的函数。由于该变量取决于屏幕宽度,并且如果宽度发生变化则需要更改,因此我需要在窗口调整大小事件中设置该变量。但是,我也希望通过其他事件(如滚动事件)调用它 $(window).resize(function (){ if ($(window).width() > 1200) { var size = "large"; } else { var size = "small"; }
$(window).resize(function (){
if ($(window).width() > 1200) {
var size = "large";
}
else {
var size = "small";
}
function showRow(param) {
if (size == "large") {
$(".result.hidden").slice(0, 3).removeClass('hidden').each(someFunction);
}
else if (size == "small") {
$(".result.hidden").slice(0, 2).removeClass('hidden').each(someFunction);
}
}
});
$(window).scroll(function () {
if ($(window).scrollTop() + $(window).height() > $(document).height() - 50) {
showRow();
}
});
您可以这样做,
showRow
是一个全局变量,其中会计算窗口大小,因此您可以在resize和滚动中调用它。这是假设您还希望在调整大小时使用showRow
。如果resize中没有任何其他代码,那么可以在第一个示例中将其全部删除
var showRow = function() {
if ($(window).width() > 1200) {
var size = "large";
}
else {
var size = "small";
}
if (size == "large") {
$(".result.hidden").slice(0, 3).removeClass('hidden').each(someFunction);
}
else if (size == "small") {
$(".result.hidden").slice(0, 2).removeClass('hidden').each(someFunction);
}
}
$(window).resize(function (){
showRow();
// other code
});
$(window).scroll(function () {
if ($(window).scrollTop() + $(window).height() > $(document).height() - 50) {
showRow();
}
});
如果不想在resize中使用showRow
,则
// initialize windowSize
var windowSize = $(window).width() > 1200 ? "large" : "small";
var showRow = function () {
if (windowSize == "large") {
$(".result.hidden").slice(0, 3).removeClass('hidden').each(someFunction);
} else if (windowSize == "small") {
$(".result.hidden").slice(0, 2).removeClass('hidden').each(someFunction);
}
}
$(window).resize(function () {
if ($(window).width() > 1200) {
windowSize = "large";
} else {
windowSize = "small";
}
// other code
});
$(window).scroll(function () {
if ($(window).scrollTop() + $(window).height() > $(document).height() - 50) {
showRow();
}
});
如何在外部定义函数(并具有
size
global(可能必须重命名))?或者简单地将函数分配给一个全局变量。为什么要在resize函数中包含showRow?函数的设置方式是将其定义为全局变量。你可以在它的showrow中传递大小,它可能在resize函数之外,事实上我认为这会使事情变得更容易,但是它需要知道变量“size”的值。调整窗口大小时需要重新计算此变量。@FelixKling如何使大小为全局,并在调整窗口大小时重新计算它?var size$(窗口).resize(函数(){if($(窗口).width()>1200){size='large';}})代码><代码>大小
实际上不必是全局的,它只需位于您想要使用它的所有函数的范围内。