使用jQuery .each()时函数是什么时候执行的?

时间:2010-12-22 20:17:09

标签: jquery

给出以下jQuery表达式

    $("form").each(function () {
        var info = validationInfo(this);
        if (info) {
            info.attachValidation();
        }
    });

选择器选择页面上的所有表单,然后对于找到的每个“表单”,它会附加一个函数。

我的问题是这个函数中的JS何时实际运行?函数中的JS在附加时是否会执行?

2 个答案:

答案 0 :(得分:2)

attachValidation()何时开始?它在循环中被调用后立即执行。

答案 1 :(得分:2)

这完全取决于代码的位置。

如果您将代码块包含在$(function(){...}runs when the document is parsed

中,它将会运行
$(function(){
    $("form").each(function () {
        var info = validationInfo(this);
        if (info) {
            info.attachValidation();
        }
    });
})

虽然根据您的使用案例,您可能希望在用户事件发生时验证所有表单,例如单击按钮。在这种情况下,您必须将代码包含在用户单击按钮时执行的函数中:

//Bind function to button
$("#mybutton").live('click', doValidation);

//Do validation
function doValidation() {
    $("form").each(function () {
        var info = validationInfo(this);
        if (info) {
            info.attachValidation();
        }
    });
}