当函数返回不同的内容时,jQuery会执行一些操作

当函数返回不同的内容时,jQuery会执行一些操作,jquery,Jquery,当函数返回不同的结果时,是否可以执行操作 我不想在此函数中添加不必要的代码: function numCols() { var winWidth = $(window).width(); if(winWidth >= 1900){ return 4; } else if(winWidth >= 1025 && winWidth <= 1899){ return 3; } else if(winWid

当函数返回不同的结果时,是否可以执行操作

我不想在此函数中添加不必要的代码:

function numCols() {
    var winWidth = $(window).width();
    if(winWidth >= 1900){
        return 4;
    } else if(winWidth >= 1025 && winWidth <= 1899){
        return 3;
    } else if(winWidth >= 600 && winWidth <= 1024){
        return 2;
    } else if(winWidth <= 599){
        return 1;
    }
}

然后我想在numCols()返回不同的数字时执行其他函数。只有当它返回一个数字时,而不是在调整窗口大小的整个过程中。

我认为您试图做的是这样的:

$(window).resize(function(){
    var cols = numCols();
    if (cols == 1) {
        // call my custom function
        myCustomFunction();
    } else if (cols == 2) {
        // call another function
        anotherFunction();
    } else {
        aThirdFunction();
    }
});

我建议采取以下措施:

加载文档时,将初始列数保存在全局变量中:

$(function(){
    window.columnNum = numCols();
});
然后在调整大小处理程序中执行以下操作:

$(window).resize(function(){
    var currentCols = numCols(); // get the current amount of cols
    if(currentCols != window.columnNum){ // execute the following code only if the number of columns have changed
        window.columnNum = currentCols;
        doSomethingElseHere(); // add any code here
    }
});

在这个场景中,您的函数返回值,是的,您可以使用该值进行操作,并且可以进行相同的其他操作

$(window).resize(function(){
   if(parseInt(numCols()))
   {
     alert('first action');
   }
});

您可以传递一个参数,并根据参数更改它返回的值。不,对不起,我认为我的操作太快了。作为对其余部分的注释-这说明了如何在列数更改时更改代码,而不必为每个数字更改代码。这也是一个好主意,但我必须为每个数字做一个If语句。可能有无限数量的数字。上面的例子只是一个简单的例子,如果有人想看到不同的解决方案,我就在小提琴上编辑了,所以在这种情况下,每当你调整窗口大小时,如果(parseInt(numCols())会尝试解析返回值,如果是真的,还有其他操作的空间这是个好主意,但我必须为每个数字做一个If语句。可能有无限数量的数字。上面的例子只是一个简单的例子虽然理论上可以有无限数量的列选项,但是超过24个(我使用过的大多数网格系统都支持)可能是不现实的。或者,由于我不知道您在自定义函数中执行什么操作,您可以将列计数作为参数传递给自定义函数。我可以,尽管上面的示例只是一段代码,让我明白了我的观点,但我将使用相同的语法,尽管我不会对列使用它。我真正需要知道的是
numCols()
是何时更改的,而不是具体更改了什么。
$(window).resize(function(){
   if(parseInt(numCols()))
   {
     alert('first action');
   }
});