jQuery 方法:.submit() 与 .trigger('submit') 之间的区别

2024-02-24

jQuery 允许通过以下任一方式以编程方式触发表单提交:

  • $('.js-form-class-hook').submit();

  • $('.js-form-class-hook').trigger('submit');


注:我的理解是.trigger('submit') is to .submit() what .on('submit',function(e){}); is to .submit(function(e){});。简而言之.trigger('submit')是一种比.submit()以编程方式提交表单。

我已经知道了一些区别.on('submit',function(e){}); and .submit(function(e){});,请参阅我的回答jQuery 中的 $(form).submit 和 $(form).on("submit") 有什么区别? https://stackoverflow.com/questions/17352251/whats-the-difference-between-form-submit-and-form-onsubmit-in-jquery/25639871#25639871,我现在想更好地理解.trigger('submit').


我的结论:经过一些研究,我发现使用.trigger('submit')似乎提供了允许的“唯一”(尽管非常强大)优势传递任意数据


使用示例1:

例如,这可以用来区分“human" vs "程序化的” 表单提交。

请参阅现场演示(单击右上角的“运行/清除”)jsbin.com/jivexawixonu/1/edit?html,js,控制台,输出 http://jsbin.com/jivexawixonu/1/edit?html,js,console,output

HTML

<form class="js-form-hook-xyz">
   <button>Submit form</button>
</form>

jQuery

var pleaseConfirmSubmission = function( formElem ){
  // ... some conditions checks
  // if condition met, submit with a flag
  formElem.trigger( "submit" , ['isProgrammaticalSubmission'] );
}


$("body").on("submit", ".js-form-hook-xyz", function(event, isProgrammaticalSubmission) {
  console.log("on form submission: " +  ( isProgrammaticalSubmission || "isHumanAction !" ) );
  if ( !isProgrammaticalSubmission ){ /* JS truthy/falsy value usage */
    event.preventDefault(); /* cancel form submission */
    pleaseConfirmSubmission( $(this) );
  }
});

资源:

  1. api.jquery.com/提交 http://api.jquery.com/submit
  2. api.jquery.com/trigger http://api.jquery.com/trigger
  3. api.jquery.com/on http://api.jquery.com/on
  4. www.inkling.com/read/jquery-cookbook-cody-lindley-1st/chapter-8/recipe-8-5 http://www.inkling.com/read/jquery-cookbook-cody-lindley-1st/chapter-8/recipe-8-5

是否提供任何其他附加功能.trigger('submit')我错过了?

或者“允许传递任意数据”是使用的唯一优点.trigger('submit') ?


之间本质上没有什么区别submit()没有争论,并且trigger('submit'), 实际上submit()没有参数最终会返回trigger() anyway.

您可以通过查看来证明这一点:

jQuery.fn.submit()

function (data, fn) {
    return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name);
}

所以,如果一个参数被传递给submit(), .on('submit'...将被调用,否则,.trigger('submit')将被调用。

submit()几乎是一种更容易理解的调用方式trigger('submit')。两者都没有特殊功能,您选择哪一个取决于个人喜好。

Note:同样适用于, etc..

“允许传递任意数据”是使用 .trigger('submit') 的唯一优点吗?

除非您认为少一个函数调用是一种优势,是的,确实如此。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jQuery 方法:.submit() 与 .trigger('submit') 之间的区别 的相关文章

随机推荐