作者:杨barkema_252 | 来源:互联网 | 2023-01-13 18:11
jQuery允许通过以下任一方式以编程方式触发表单提交:$(‘.js-form-class-hook’).submit();$(‘.js-form-class-hook’).t
jQuery允许通过以下任一方式以编程方式触发表单提交:
> $(‘.js-form-class-hook’).submit(); > $(‘.js-form-class-hook’).trigger(‘submit’);
注意:我的理解是.trigger(‘submit’)是.submit()是什么.on(‘submit’,function(e){});是.submit(function(e){});.简而言之.trigger(‘submit’)比.submit()以编程方式提交表单更强大.
我已经知道.on(‘submit’,function(e){})之间的一些区别;和.submit(function(e){});,请参阅我在What’s the difference between $(form).submit and $(form).on(“submit”) in jQuery?的回答,我想现在更好地理解.trigger(‘submit’)的作用.
我的结论:经过一些研究后我发现使用.trigger(‘submit’)似乎提供了允许传递任意数据的“唯一”(虽然非常强大)的优点
样品用法1:
这可以例如用于区分“人”与“程序”表单提交.
在jsbin.com/jivexawixonu/1/edit?html,js,console,output看到现场演示(点击右上角的运行/清除)
HTML
Submit 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) ); } });
资源:
> api.jquery.com/submit > api.jquery.com/trigger > api.jquery.com/on > www.inkling.com/read/jquery-cookbook-cody-lindley-1st/chapter-8/recipe-8-5
我错过了.trigger(‘submit’)提供的其他任何其他功能吗?
或者“允许传递任意数据”是使用.trigger(‘submit’)的唯一优势?
解决方法:
没有参数的submit()和触发器(‘submit’)之间基本上没有什么不同,实际上没有参数的submit()最终会返回trigger().
您可以通过查看jQuery Source来证明这一点:
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()几乎是一种人类可读的调用触发器(‘submit’)的方式.两者都没有特殊功能,您选择的是个人偏好.
注意:click()
,change()
等同样如此.
is “allowing to pass arbitrary data” the only advantage of using .trigger(‘submit’) ?
除非你考虑一个较少的函数调用优势,是的,它是.