2016-08-12 9 views
0

特定のログインボタンが押されたときにスライドするログインフォームの作成に忙しいです。私は今つまずく問題は私のウェブサイトが現在使用していることです複数のHTMLファイルで重複したHTMLコードを取り除く効率的な方法が必要

<main> 
     <div class="login"> 
      <h5>Log in here</h5> 
      <form> 
       <label for="username">Username:</label> 
       <input type="text" id="username" required> 
       <label for="password">Password:</label> 
       <input type="password" id="password" required> 
       <p class="registertext">Click <a href="register.html">here</a> to register!</p> 
       <input type="submit" value="Sign in"> 
      </form> 
     </div> 
    </main> 

:私は、ログインフォームのために作られたHTMLは次のようになり

$(document).ready(function(){ 
    $('.loginButton').click(function(){ 
     $('.login').slideToggle(); 
    }); 
}); 

:私は、次のコードを使用してこの作業を持っています4つのHTMLページ。したがって、それらのHTMLファイルのそれぞれに上記のHTMLコードが存在します。今私はこの重複したコードを取り除きたいと思っていますが、これを行うには何が良い、効率的な方法であるかは分かりません。私はすでに働いていたいくつかのことを自分で試しましたが、効率的かどうかはわかりません。私が最初にしたことは、ログインボタンが押された後にdivの中にHTMLコードを追加することでした。私はこれが一度ブール値の1回だけ起こるようにしました。

var firstTime = true; 

$(document).ready(function(){ 
    $('.loginButton').click(function(){ 
     if (firstTime)  { 
      $('.login').append('<h5>Log in here</h5><form><label for="username">Username:</label><input type="text" id="username" required><label for="password">Password:</label><input type="password" id="password" required><p class="registertext">Click <a href="register.html">here</a> to register!</p><input type="submit" value="Sign in"></form>'); 
     firstTime = false } 
    $('.login').slideToggle(); 
    }); 
}); 

私が見つけた別の解決策は、別のHTMLファイル内のdiv内のコードを入れて、そのファイルをdivにロードすることでした。

$(document).ready(function(){ 
    $('.login').load(login.html); 
    $('.loginButton').click(function(){ 
     $(this).toggleClass('active'); 
     $('.login').slideToggle(); 
    }); 
}); 
+1

これを処理する最善の方法は、PHPやNodeJS/pugテンプレートなど、何らかの種類のサーバーインターフェイスを使用することです。 –

+0

何らかの種類のテンプレートエンジンを使用したくない場合は、例のようにjQuery 'load()'メソッドを使用してください。ちょっと忘れないでください、このメソッドはasyncです –

+0

try http://reactrb.orgあなたは、あなたのhtmlをrubyで書かれたモジュール反応コンポーネントで置き換えることができます。サーバー側のテンプレートや、何かを始めるために必要なものはありません。 –

答えて

0

HTMLとJSの混合は悪い原則です。 JSで明示的なDOM操作やHTML文字列をたくさん使うのは悪い(読みにくく/維持するのが難しい)。

(Java、PHP、Rubyなどの)テンプレート処理を行うにはサーバー側の技術が必要です。また、ReactやAngularJSのようなクライアント側の技術を使用することもできます。

関連する問題