Javascript 从窗口滚动事件中调用窗口大小调整事件中的函数?

Javascript 从窗口滚动事件中调用窗口大小调整事件中的函数?,javascript,Javascript,我有一个叫做size的变量和一个依赖于它的函数。由于该变量取决于屏幕宽度,并且如果宽度发生变化则需要更改,因此我需要在窗口调整大小事件中设置该变量。但是,我也希望通过其他事件(如滚动事件)调用它 $(window).resize(function (){ if ($(window).width() > 1200) { var size = "large"; } else { var size = "small"; }

我有一个叫做size的变量和一个依赖于它的函数。由于该变量取决于屏幕宽度,并且如果宽度发生变化则需要更改,因此我需要在窗口调整大小事件中设置该变量。但是,我也希望通过其他事件(如滚动事件)调用它

$(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';}})<代码>大小
实际上不必是全局的,它只需位于您想要使用它的所有函数的范围内。