简体   繁体   English

按钮单击动作的Javascript(jQuery)语法

[英]Javascript (jQuery) Syntax on button click action

I have the following Javascript: 我有以下Javascript:

var form = $(formArray[i]);
var formAction = form.attr("action");
var button = form.find("input:submit");
button.click(function (formAction, form) {
  return function () {
    var formAjaxAction = formAction.replace(originalString, ajaxString);
    ajaxPostHandler(formAjaxAction, onSuccessFunc, function () {
      errorHandler(errorMsg, widget);
    }, widget, "internalAjaxQueue", false, form);
    return false;
  };
}(formAction, form));

What does the final line do? 最后一行是做什么的? Invoke the action? 调用动作?

This code defines a function that takes two parameters function (formAction, form) and returns a click handler. 这段代码定义了一个函数,该function (formAction, form)两个参数function (formAction, form)并返回一个单击处理程序。 return function() { ... }; .

It then calls the function with the two parameters (the last line) and passes the function that it returns to jQuery's click function. 然后,它使用两个参数(最后一行)调用该函数,并将返回的函数传递给jQuery的click函数。

The reason to do it this way is that if you subsequently assign something else to the form or formAction variables, the handler will not be affected. 这样做的原因是,如果您随后将其他内容分配给formformAction变量,则处理程序将不会受到影响。

It works like this: 它是这样的:

function (formAction, form) {
  return function () {
    var formAjaxAction = formAction.replace(originalString, ajaxString);
    ajaxPostHandler(formAjaxAction, onSuccessFunc, function () {
      errorHandler(errorMsg, widget);
    }, widget, "internalAjaxQueue", false, form);
    return false;
  };
}

defines a function (obviously) but inside: 定义一个函数(很明显),但是在里面:

{function(...) ... }

it is scoped not to be visible outside that context. 它的范围是在该上下文之外不可见。 That function returns an anonymous function. 该函数返回一个匿名函数。

(function(...) ... }(formAction, form)

calls that function with those two arguments and: 使用这两个参数调用该函数,并且:

button.click(...);

assigns that anonymous function to be a click event handler for the button. 将该匿名函数分配为按钮的click事件处理程序。

It's a fairly obfuscated way to write what it's doing. 这是一种相当混乱的方式来写它在做什么。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM