jQuery - 为什么$('form')。get(0).submit()不会触发附加的提交处理程序? [英] jQuery - Why does $('form').get(0).submit() not trigger the attached submit handler?

查看:500
本文介绍了jQuery - 为什么$('form')。get(0).submit()不会触发附加的提交处理程序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我为表单创建了下面的处理函数(回调函数):

  $('form')。submit (function(event){
event.preventDefault();
alert('form submitted');
});

为什么调用 $('form')。get(0)。提交不要调用提交处理程序?直接提交表单。

解决方案

.get(0)返回本地js DOM元素(与 $('form')[0] 相同),然后直接触发
submit事件。



如果您试图让第一个元素使用 .eq(0),并使用<$ c $触发提交jQuery样式c> .submit()。



摘要

$ {code $('selector')[0] 〜返回本地的js DOM元素

  • .get(0)〜与[0]相同。
  • .eq(0)〜将第一个元素作为jQuery对象返回。



  • 更多




    • 附加提交事件(jQuery): $('form.selector')。submit(function(e){}) ;

    • 触发器提交(jQuery): $('form.selector')。submit(); OR $('form.selector')。trigger('submit');

    • 触发器在第一个元素上提交: $('form')。eq(0).submit();



    演示 jsFiddle



    我希望它能满足您的需求。

    Demo jQuery

      $('form')。submit(function(event){
    event.preventDefault(); //将阻止本机处理程序开火。
    alert('表单提交:'+ $(this).attr(id));
    });

    //改变`.eq(index)`为1来触发第二种形式的提交:
    $('form')。eq(0).submit(); //相同:$('form')。eq(0).trigger(submit);

    演示HTML

     < form id =form1>< / form> 
    < form id =form2>< / form>


    Suppose I've created the following handler (callback) for a form:

    $('form').submit(function (event) {
       event.preventDefault();
       alert('form submitted');
    });
    

    Why does calling $('form').get(0).submit not call the submit handler? The form just gets directly submitted.

    解决方案

    .get(0) returns the native js DOM element ( Same as $('form')[0] ) and then you are triggering the submit event directly.

    if you are trying to get the first Element use .eq(0) and trigger the submit jQuery style using .submit().

    Summary:

    • $('selector')[0] ~ returns the native js DOM element
    • .get(0) ~ Same as [0].
    • .eq(0) ~ returns the first element as a jQuery object .

    More:

    • Attach to submit event (jQuery): $('form.selector').submit(function (e) { });
    • Trigger Submit (jQuery): $('form.selector').submit(); OR $('form.selector').trigger('submit');
    • Trigger Submit on the first element: $('form').eq(0).submit();

    Demo: jsFiddle

    I hope its what you need.

    Demo jQuery:

    $('form').submit(function (event) {
        event.preventDefault(); // Will prevent the native handler from firing.
        alert('form submitted :' + $(this).attr("id"));
    });
    
    //change the `.eq(index)` to 1 to trigger the submit on the second form:  
    $('form').eq(0).submit(); // Same as: $('form').eq(0).trigger("submit");
    

    Demo HTML:

    <form id="form1"></form>
    <form id="form2"></form>
    

    这篇关于jQuery - 为什么$('form')。get(0).submit()不会触发附加的提交处理程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆