Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 中断jQuery的父函数每个函数_Javascript_Jquery - Fatal编程技术网

Javascript 中断jQuery的父函数每个函数

Javascript 中断jQuery的父函数每个函数,javascript,jquery,Javascript,Jquery,我有一个$。每个jQuery函数位于父javascript函数中,如何在某个索引(I)上断开父函数?要断开一个循环,只需返回false: $('something').each(function() { if (need_to_break) { return false; // returning false stops the loop } }); 要立即从多个循环中断/返回每个循环,只需抛出一个异常: var $break = {}; $('somethin

我有一个$。每个jQuery函数位于父javascript函数中,如何在某个索引(I)上断开父函数?

要断开一个循环,只需返回
false

$('something').each(function() {
    if (need_to_break) {
        return false; // returning false stops the loop
    }
});
要立即从多个
循环中断/返回每个
循环,只需抛出一个异常:

var $break = {};
$('something').each(function() {
    try {
        $('something').each(function() {
            $('something').each(function() {
                $('something').each(function() {
                    throw $break;
                });
            });
        });
    } catch(E) {
        if (E != $break) throw E;
    }
});
在你想返回的循环中捕捉它

例如,Prototype.js就是这样的

更为传统的解决方案:

var do_break = false;
$('something').each(function() {
    $('something').each(function() {
        $('something').each(function() {
            $('something').each(function() {
                do_break = true;
                return false;
            });
            if (do_break) {
                return false;
            }
        });
        if (do_break) {
            return false;
        }
    });
    if (do_break) {
        return false;
    }
});

我能想到的唯一解决方案是在父函数上设置一个变量(开关),在每个函数中,若I==x,在更改开关后首先中断每个函数。。。然后检查开关值以确定是否中断父函数。

您可以执行以下操作:

function foo() {

var success = true;

$('element').each(function() {

    if (condition) {
        success = false;
        return success;
    }

});

if (!success)
   return false;

//should not get here
}

从它的声音,你有这样的东西:

function outer(someParam) {
    $.each(someParam, function(i) {
        // do something with each value in someParam
    });
}
当内部循环达到某个值时,您希望从外部返回。你不可能一下子做到这一点。关键是从
$执行
返回false
。每个
回调结束“循环”。然后,如果需要,可以将变量设置为有条件返回:

function outer(someParam) {
    var returnNow = false;
    $.each(someParam, function(i) {
        if (i === 5) {
            returnNow = true;
            return false;
        }

        // do something with each value in someParam
    });

    if (returnNow) {
        return;
        // return immediately
    }

    // do some other action if you want to
}
标记中断
outerloop:
对于(;;)
{
对于(;;)
{
中断;/*中断内部循环*/
} 
对于(;;)
{
断开外部循环;/*断开外部循环*/
}
}

您所说的“中断父函数”是什么意思?你是说“返回父函数”吗?OP没有提到“多个”每个循环。我个人认为使用try-catch不是正确的方法,就像在服务器端一样。它用于意外错误,所有其他错误都应处理。请参阅我的答案以获得替代解决方案。这只捕获中断异常,因此在这方面是完全安全的。是的,这很不传统。但这实际上是一种非常有效的方法;如果您尝试以其他方式(使用多个嵌套循环)执行此操作,您将看到1。你所做的正是投掷/接球所能做的。这更难阅读和理解。btw return和return false有区别吗?@Brandon在
$中。每个
处理程序都必须返回
false
才能中断循环。如果你能给出一个更精确的例子来说明你在做什么,那么给你一个更精确的答案就更容易了。