1

jQuery を使用して、私は最近、これら 2 つの類似したコード フラグメントが同等であるかどうか疑問に思いました。

$('form[name="unique-name"]').submit(); // (call jQuery.submit() on the 
                                        //  collection of 1 form node)

対。

$('form[name="unique-name"]')[0].submit(); // (call the native HTMLFormElement.submit()
                                           //  DOM method on the single form in the collection)

どちらも私のコード (IIRC) で同じ結果を生成しますが、jQuery がネイティブ DOM メソッドを通過しているだけなのか、それともまったく別のことをしているのか疑問に思い始めました。jQuery ソースを調べてみたところ、ネイティブ DOM の submit() が呼び出されたことはありませんでした。

ドキュメントを読んで検索した後でも、jQuery が「より良い」submit() を提供しているかどうか、またはコレクション全体でネイティブ DOM submit() を通過しているだけかどうかを判断できません。それはどれですか?可能であれば、ソースまたはドキュメントを教えてください。

4

1 に答える 1

3

はい、jQuery は を呼び出さない限り、イベントをバブルアップしますevent.stopPropagation()

私の経験に基づいた推測は、これが次の場合に起こる方法ですsubmit():

    postDispatch: function( event ) {
        // If form was submitted by the user, bubble the event up the tree
        if ( event._submit_bubble ) {
            delete event._submit_bubble;
            if ( this.parentNode && !event.isTrigger ) {
                jQuery.event.simulate( "submit", this.parentNode, event, true );
            }
        }
    },
于 2013-03-28T03:39:27.823 に答える