Quale comportamento deve essere preferito per l'inizializzazione del widget:
1) L'HTML richiesto è generato dal widget stesso:
Layout:
<div id="my-widget"/>
L'inizializzazione:
$('#my-widget').myWidget(); // Creates HTML
2) L'HTML richiesto viene inserito nella pagina per utente:
<div id="my-widget">
<div class="foo"/>
<div class="bar"/>
</div>
L'inizializzazione:
$('#my-widget').myWidget(); // Won't create nested div's
Mark Otto (uno dei creatori di Bootstrap) suggerisce di non generare markup da javascript: link
Attualmente, utilizzo la seguente funzione, che aggiunge l'elemento alla radice del widget (questo. $ elemento) solo se non esiste:
function($content) {
var $child = this.$element.children('.' + $content.attr('class'));
return $child.length ? $child : $content.appendTo(this.$element);
};