4

ネイティブJavaScriptではなくjQueryイベントバインディングを使用する必要がある理由を誰かが指摘できるかどうか疑問に思っています。私の同僚が私に次のコードを送ってくれました。

document.forms[0].onsubmit = function () {
    if (Page_IsValid) {
        $("#dialog").dialog({
            height: 140,
            modal: true,
            resizable: false,
            title: ''

        });
        $(".ui-dialog-titlebar").hide();
    }
}

そして私は彼にそれを次のように書き直すように言いました。

$(".form").submit(function () {
    if (Page_IsValid) {
        $(".dialog").dialog({ 
            height: 140,
            modal: true,
            resizable: false,
            title: '',
            open: function (event, ui) {
                $(".ui-dialog-titlebar").hide();
            }
        });
    }
});

しかし、なぜ私のコードを使用する必要があるのか​​について質問されたとき、構文の明確さと慣習以外の特定の理由を提供できませんでした。では、最初の例よりも2番目の例を使用する理由は他にありますか?そうでない場合、この場合にjQueryを使用することの本当の利点は何ですか?

4

3 に答える 3

3

1つの理由は、以前に定義されたイベントコールバックを踏みにじることを心配する必要がないことです。jQueryはそれらをキューに入れ、すべてを実行します。

注:書き直したバージョンでは、クラスが。のページ上のすべてのものにビヘイビアーがアタッチされますがform、元のバージョンでは、クラスに関係なく、ページの最初のフォームにアタッチされます。これはあなたが望むものではないかもしれません。

于 2012-05-08T00:50:02.840 に答える
2

イベントの問題onsubmitは、要素ごとおよびイベントごとに1つのハンドラーしか設定できないことです。通常のブラウザでは使用できますaddEventListenerが、どのIEを使用できますか?jQueryのおかげで、スクリプトを実行しているブラウザーを忘れて、1つの要素に多くのリスナーを追加することができます。

または、最初のサンプルのように、1対多、多対多、または1対1だけです。

于 2012-05-08T00:52:10.347 に答える
1

2番目の例は、送信関数を追加するフォームが複数ある場合に適しています。それを除けば、前者よりも2番目を好む技術的な理由はありません。

一貫性は、2番目のIMOの十分な理由です。ベテランの開発者はどちらも考えずに処理しますが、環境に配慮した才能は精神的にギアをシフトしなければならないことに気付くかもしれません。

于 2012-05-08T00:52:54.877 に答える