これを行う最も簡単な方法は、id属性をクラス属性に置き換えることです。
<div id="chat-outline">
...
</div>
になります
<div class="chat-outline">
...
</div>
そして、CSSを適切に更新します。
.chat-outline
{
background-color: gray;
....
}
次に、text / templateタグを使用して、jQueryで使用できるようにします。
<script type="text/template" id="chat-template">
<div class="chat-outline">
...
</div>
</script>
ブラウザは認識しないスクリプトタイプを無視するため、これはhtmlレンダリングエンジンによって無視されることに注意してください。ただし、IDがあるため、jQueryに表示され、次のようにアクセスできます。
<div id="container">
</div>
<script type="text/javascript">
$(function() {
var chatTemplate = $('#chat-template').html();
$('#container').append(chatTemplate); // First instance
$('#container').append(chatTemplate); // Second instance
$('#container').append(chatTemplate); // Third instance
});
</script>
もちろん、コードでチャットインスタンスのハンドルとしてid属性が必要な場合は、IDを指定してチャットインスタンスのhtmlを作成する関数を作成できます。この場合、アンダースコアを使用してランダムID、テンプレート、および反復関数を提供しますが、別のライブラリを使用したり、独自のライブラリを作成したりするのは簡単です。
<div id="container">
</div>
<script type="text/template" id="chat-template">
<div class="chat-outline" id="<%= id %>">
...
</div>
</script>
<script type="text/javascript">
var createChatInstance(idstring) {
return _.template($('#chat-template').html(), { id: idstring });
}
$(function() {
var chatTemplate = $('#chat-template').html();
// Create an array of 3 unique ids by which chat instances will be accessed.
var chatIds = [_.uniqueId('chat-outline'),
_.uniqueId('chat-outline'),
_.uniqueId('chat-outline')];
_.each(chatIds, function(chatId) {
$('#container').append(createChatInstance(chatId));
});
// You now have an array of 3 unique ids matching 3 divs.
// You can access individual sub-divs via descendent class matching from the id
// thus: $('#' + chatIds[n] + ' .chat-message').keyup(...code handling event...);
});
</script>
この時点で、アーキテクチャをさらに進めたい場合は、backbone.jsのようなものを調査することを検討する必要があります。
お役に立てれば。