0

スタック オーバーフローに関する多くの質問を既に読みましたが、質問に対する回答がありません。

私は多くの JavaScript のやり取りを行う大規模な Web サイトに取り組んでいます。最後に、すべてのコードがマージされた 1 つのファイルが必要です。問題は、このようなコードをどこに置くべきかです

$('#changeMailForm').submit(/*some code here*/) // or
$('#loginForm').submit()

ログインフォームは、ユーザーがログインしている場合を除くすべてのページにあります。そのため、ユーザーがログインしている場合、js コードはファイル内にあり、送信イベントをバインドしようとします。私のjsアプリケーションの構造は次のとおりです。

(function(init){
    init(window.jQuery, window, document);
}(function($, window, document) {

    $(function() {

        //dom ready

    });

    // Classes, etc.

}));

各イベントを書き留めて、それがdomにないかどうか気にしないか、それとも完全に異なるかどうかを確認する必要がありますか? アプリケーションのスケーラビリティと再利用性を維持するためのベスト プラクティスは何ですか。

4

2 に答える 2

0

ユーザーがログインしていてフォームが存在しない場合、jQuery はバインド先のセレクターを見つけることができません。確かに、これはパフォーマンスにわずかに影響しますが、それを回避することができます.

または、表示しているページに応じて JS を印刷できるようにする PHP JS ファイルを作成することもできます。javascript.js.php?page=home のようなもので、次のような php コードを使用します。

<?php
if($_GET['page'] == 'home'){
 print "$('#changeMailForm').submit(/*some code here*/) \/\/ or";
 print "$('#loginForm').submit()";
}
?>
于 2013-04-15T11:07:24.710 に答える
0

You can use jQuery to handle elements that doesn't exist in the page. If a selector doesn't find any elements you get an empty jQuery object back, and applying methods to an empty jQuery object silently does nothing.

However, if you have a lot of different event handlers in different pages, it's more maintainable if you only bind those that you actally expect in each page. That makes the code more maintainable, because you can add elements in a page without having to check the list of all event handlers in the site for conflicts.

于 2013-04-15T11:08:35.290 に答える